diff options
author | Anders Carlsson <andersca@mac.com> | 2008-02-07 17:19:11 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2008-02-07 17:19:11 +0000 |
commit | 61900f0ef4fc705e62609939f30a375a9576e43d (patch) | |
tree | c3d572b8efb80268bb9418d182177396a9be9777 /CodeGen/ModuleBuilder.cpp | |
parent | 419154d6d8e80ff2083dd039095781a0eb99444f (diff) |
Handle top-level asm declarations.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46855 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'CodeGen/ModuleBuilder.cpp')
-rw-r--r-- | CodeGen/ModuleBuilder.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/CodeGen/ModuleBuilder.cpp b/CodeGen/ModuleBuilder.cpp index 50d6fedadd..06467488a5 100644 --- a/CodeGen/ModuleBuilder.cpp +++ b/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? |