summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-03-02 04:14:42 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-03-02 04:14:42 +0000
commit38c4e535493363b96eac47af9e7c056530137bea (patch)
tree02b99cf243d4f23b72a93f2f8d3fa49ff82cba67 /include
parentf7af396c9571e4efe944c5bf739bce667f99556a (diff)
downloadllvm-38c4e535493363b96eac47af9e7c056530137bea.tar.gz
llvm-38c4e535493363b96eac47af9e7c056530137bea.tar.bz2
llvm-38c4e535493363b96eac47af9e7c056530137bea.tar.xz
Add a special streamer to libLTO that just records symbols definitions and
uses. The result produced by the streamer is used to give the linker more accurate information and to add to llvm.compiler.used. The second improvement removes the need for the user to add __attribute__((used)) to functions only used in inline asm. The first one lets us build firefox with LTO on Darwin :-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126830 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Module.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/include/llvm/Module.h b/include/llvm/Module.h
index f95895e957..c7063f5e1c 100644
--- a/include/llvm/Module.h
+++ b/include/llvm/Module.h
@@ -211,15 +211,20 @@ public:
void setTargetTriple(StringRef T) { TargetTriple = T; }
/// Set the module-scope inline assembly blocks.
- void setModuleInlineAsm(StringRef Asm) { GlobalScopeAsm = Asm; }
+ void setModuleInlineAsm(StringRef Asm) {
+ GlobalScopeAsm = Asm;
+ if (!GlobalScopeAsm.empty() &&
+ GlobalScopeAsm[GlobalScopeAsm.size()-1] != '\n')
+ GlobalScopeAsm += '\n';
+ }
/// Append to the module-scope inline assembly blocks, automatically inserting
/// a separating newline if necessary.
void appendModuleInlineAsm(StringRef Asm) {
+ GlobalScopeAsm += Asm;
if (!GlobalScopeAsm.empty() &&
GlobalScopeAsm[GlobalScopeAsm.size()-1] != '\n')
GlobalScopeAsm += '\n';
- GlobalScopeAsm += Asm;
}
/// @}