diff options
author | Dan Gohman <gohman@apple.com> | 2010-08-26 15:41:53 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-08-26 15:41:53 +0000 |
commit | ac8e12c0904eb6a0a463c3396088f6a23e4ef2fe (patch) | |
tree | 87960d3ef2ad54c7932c0a72352fb9c01672aaf3 /test/Linker/metadata-a.ll | |
parent | a4f776592fc7dc9d63a5ced381966e308933732b (diff) | |
download | external_llvm-ac8e12c0904eb6a0a463c3396088f6a23e4ef2fe.zip external_llvm-ac8e12c0904eb6a0a463c3396088f6a23e4ef2fe.tar.gz external_llvm-ac8e12c0904eb6a0a463c3396088f6a23e4ef2fe.tar.bz2 |
Reapply r112091 and r111922, support for metadata linking, with a
fix: add a flag to MapValue and friends which indicates whether
any module-level mappings are being made. In the common case of
inlining, no module-level mappings are needed, so MapValue doesn't
need to examine non-function-local metadata, which can be very
expensive in the case of a large module with really deep metadata
(e.g. a large C++ program compiled with -g).
This flag is a little awkward; perhaps eventually it can be moved
into the ClonedCodeInfo class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112190 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Linker/metadata-a.ll')
-rw-r--r-- | test/Linker/metadata-a.ll | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/test/Linker/metadata-a.ll b/test/Linker/metadata-a.ll new file mode 100644 index 0000000..5a9d2e4 --- /dev/null +++ b/test/Linker/metadata-a.ll @@ -0,0 +1,15 @@ +; RUN: llvm-link %s %p/metadata-b.ll -S -o - | FileCheck %s + +; CHECK: define void @foo(i32 %a) +; CHECK: ret void, !attach !0, !also !{i32 %a} +; CHECK: define void @goo(i32 %b) +; CHECK: ret void, !attach !1, !and !{i32 %b} +; CHECK: !0 = metadata !{i32 524334, void (i32)* @foo} +; CHECK: !1 = metadata !{i32 524334, void (i32)* @goo} + +define void @foo(i32 %a) nounwind { +entry: + ret void, !attach !0, !also !{ i32 %a } +} + +!0 = metadata !{i32 524334, void (i32)* @foo} |