diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2015-03-16 18:02:16 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2015-03-16 18:02:16 +0000 |
commit | 322ffceaf5b413b61145c26fb524a1eeb5646239 (patch) | |
tree | 481db8c60a584ef91a698f586431c967f9061585 /llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | |
parent | a8ec726bb6a248b17f4fa8ef6568253e3c742f28 (diff) | |
download | bcm5719-llvm-322ffceaf5b413b61145c26fb524a1eeb5646239.tar.gz bcm5719-llvm-322ffceaf5b413b61145c26fb524a1eeb5646239.zip |
[AsmPrinter] Use the per-function subtarget to emit inline asm instructions that
are not at the file level.
Previously, the default subtarget created from the target triple was used to
emit inline asm instructions. Compilation would fail in cases where the feature
bits necessary to assemble an inline asm instruction in a function weren't set.
llvm-svn: 232392
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 4a03e5ef045..b2919f2301e 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -221,9 +221,13 @@ bool AsmPrinter::doInitialization(Module &M) { // Emit module-level inline asm if it exists. if (!M.getModuleInlineAsm().empty()) { + // We're at the module level. Construct MCSubtarget from the default CPU + // and target triple. + std::unique_ptr<MCSubtargetInfo> STI(TM.getTarget().createMCSubtargetInfo( + TM.getTargetTriple(), TM.getTargetCPU(), TM.getTargetFeatureString())); OutStreamer.AddComment("Start of file scope inline assembly"); OutStreamer.AddBlankLine(); - EmitInlineAsm(M.getModuleInlineAsm()+"\n"); + EmitInlineAsm(M.getModuleInlineAsm()+"\n", *STI); OutStreamer.AddComment("End of file scope inline assembly"); OutStreamer.AddBlankLine(); } |