Make CodeGenFunction::EmitMSAsmStmt throw a fatal error as MS-style inline

assembly is completely untested and unsupported.

llvm-svn: 158329
This commit is contained in:
Chad Rosier 2012-06-11 21:52:25 +00:00
parent e782fa649f
commit 175b507f5e
1 changed files with 2 additions and 37 deletions

View File

@ -1684,41 +1684,6 @@ void CodeGenFunction::EmitAsmStmt(const AsmStmt &S) {
}
void CodeGenFunction::EmitMSAsmStmt(const MSAsmStmt &S) {
// Analyze the asm string to decompose it into its pieces. We know that Sema
// has already done this, so it is guaranteed to be successful.
// Get all the output and input constraints together.
std::vector<llvm::Value*> Args;
std::vector<llvm::Type *> ArgTypes;
std::string Constraints;
// Keep track of inout constraints.
// Append the "input" part of inout constraints last.
// Clobbers
// Add machine specific clobbers
std::string MachineClobbers = Target.getClobbers();
if (!MachineClobbers.empty()) {
if (!Constraints.empty())
Constraints += ',';
Constraints += MachineClobbers;
}
llvm::Type *ResultType = VoidTy;
llvm::FunctionType *FTy =
llvm::FunctionType::get(ResultType, ArgTypes, false);
llvm::InlineAsm *IA =
llvm::InlineAsm::get(FTy, *S.getAsmString(), Constraints, true);
llvm::CallInst *Result = Builder.CreateCall(IA, Args);
Result->addAttribute(~0, llvm::Attribute::NoUnwind);
// Slap the source location of the inline asm into a !srcloc metadata on the
// call.
// Extract all of the register value results from the asm.
// Analyze the asm string to decompose it into its pieces.
llvm::report_fatal_error("MS-style asm codegen isn't yet supported.");
}