summaryrefslogtreecommitdiff
path: root/test/Linker/override-with-internal-linkage-2.ll
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-22 04:11:00 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-22 04:11:00 +0000
commitfae374b95efd9f07a7bcb9fae374c10b02b9283d (patch)
tree5643343e503dddcf70a7d2c2b1490653f13b52b5 /test/Linker/override-with-internal-linkage-2.ll
parentd9443d717dbb3ec01ae8441dd70c2a077a7b5c09 (diff)
Linker: Add flag to override linkage rules
Add a flag to lib/Linker (and `llvm-link`) to override linkage rules. When set, the functions in the source module *always* replace those in the destination module. The `llvm-link` option is `-override=abc.ll`. All the "regular" modules are loaded and linked first, followed by the `-override` modules. This is useful for debugging workflows where some subset of the module (e.g., a single function) is extracted into a separate file where it's optimized differently, before being merged back in. Patch by Luqman Aden! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235473 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Linker/override-with-internal-linkage-2.ll')
-rw-r--r--test/Linker/override-with-internal-linkage-2.ll23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/Linker/override-with-internal-linkage-2.ll b/test/Linker/override-with-internal-linkage-2.ll
new file mode 100644
index 00000000000..2de52a925b2
--- /dev/null
+++ b/test/Linker/override-with-internal-linkage-2.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-link %s -override %S/Inputs/override-with-internal-linkage-2.ll -S | FileCheck %s
+; RUN: llvm-link -override %S/Inputs/override-with-internal-linkage-2.ll %s -S | FileCheck %s
+
+; CHECK-LABEL: define i32 @foo
+; CHECK-NEXT: entry:
+; CHECK-NEXT: %add = add nsw i32 %i, %i
+; CHECK-NEXT: ret i32 %add
+define i32 @foo(i32 %i) {
+entry:
+ %add = add nsw i32 %i, %i
+ ret i32 %add
+}
+
+; CHECK-LABEL: define internal i32 @foo1
+; CHECK-NEXT: entry:
+; CHECK-NEXT: ret i32 4
+
+; Function Attrs: nounwind ssp uwtable
+define i32 @main(i32 %argc, i8** %argv) {
+entry:
+ %a = call i32 @foo(i32 2)
+ ret i32 %a
+}