summaryrefslogtreecommitdiffstats
path: root/clang/CodeGen
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2008-02-08 00:33:21 +0000
committerAnders Carlsson <andersca@mac.com>2008-02-08 00:33:21 +0000
commit5c6c05956e40367520b12f1549f6f922d34ef573 (patch)
tree87d576f117150b7d120184e952900f496204ad69 /clang/CodeGen
parent0fae4f56df9e8e6d02012e5e12c0ff2d8d0e012d (diff)
downloadbcm5719-llvm-5c6c05956e40367520b12f1549f6f922d34ef573.tar.gz
bcm5719-llvm-5c6c05956e40367520b12f1549f6f922d34ef573.zip
Put back the top-level asm code; all tests pass now.
llvm-svn: 46868
Diffstat (limited to 'clang/CodeGen')
-rw-r--r--clang/CodeGen/ModuleBuilder.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/CodeGen/ModuleBuilder.cpp b/clang/CodeGen/ModuleBuilder.cpp
index 50d6fedadd5..06467488a5e 100644
--- a/clang/CodeGen/ModuleBuilder.cpp
+++ b/clang/CodeGen/ModuleBuilder.cpp
@@ -70,6 +70,15 @@ namespace {
Builder->WarnUnsupported(LSD, "linkage spec");
// FIXME: implement C++ linkage, C linkage works mostly by C
// language reuse already.
+ } else if (FileScopeAsmDecl *AD = dyn_cast<FileScopeAsmDecl>(D)) {
+ std::string AsmString(AD->getAsmString()->getStrData(),
+ AD->getAsmString()->getByteLength());
+
+ const std::string &S = Builder->getModule().getModuleInlineAsm();
+ if (S.empty())
+ Builder->getModule().setModuleInlineAsm(AsmString);
+ else
+ Builder->getModule().setModuleInlineAsm(S + '\n' + AsmString);
} else {
assert(isa<TypeDecl>(D) && "Unknown top level decl");
// TODO: handle debug info?
OpenPOWER on IntegriCloud