aboutsummaryrefslogtreecommitdiffstats
path: root/test/Linker/metadata-a.ll
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-08-26 15:41:53 +0000
committerDan Gohman <gohman@apple.com>2010-08-26 15:41:53 +0000
commitac8e12c0904eb6a0a463c3396088f6a23e4ef2fe (patch)
tree87960d3ef2ad54c7932c0a72352fb9c01672aaf3 /test/Linker/metadata-a.ll
parenta4f776592fc7dc9d63a5ced381966e308933732b (diff)
downloadexternal_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.ll15
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}