diff options
Diffstat (limited to 'test/Transforms')
-rw-r--r-- | test/Transforms/GlobalDCE/externally_available.ll | 10 | ||||
-rw-r--r-- | test/Transforms/Inline/externally_available.ll | 16 | ||||
-rw-r--r-- | test/Transforms/InstCombine/odr-linkage.ll | 19 |
3 files changed, 45 insertions, 0 deletions
diff --git a/test/Transforms/GlobalDCE/externally_available.ll b/test/Transforms/GlobalDCE/externally_available.ll new file mode 100644 index 0000000..ccdf7e1 --- /dev/null +++ b/test/Transforms/GlobalDCE/externally_available.ll @@ -0,0 +1,10 @@ +; RUN: llvm-as < %s | opt -globaldce | llvm-dis | not grep test_ + +; test_function should not be emitted to the .s file. +define available_externally i32 @test_function() { + ret i32 4 +} + +; test_global should not be emitted to the .s file. +@test_global = available_externally global i32 4 + diff --git a/test/Transforms/Inline/externally_available.ll b/test/Transforms/Inline/externally_available.ll new file mode 100644 index 0000000..68f7d65 --- /dev/null +++ b/test/Transforms/Inline/externally_available.ll @@ -0,0 +1,16 @@ +; RUN: llvm-as < %s | opt -inline -constprop | llvm-dis > %t +; RUN: not grep test_function %t +; RUN: grep {ret i32 5} %t + + +; test_function should not be emitted to the .s file. +define available_externally i32 @test_function() { + ret i32 4 +} + + +define i32 @result() { + %A = call i32 @test_function() + %B = add i32 %A, 1 + ret i32 %B +}
\ No newline at end of file diff --git a/test/Transforms/InstCombine/odr-linkage.ll b/test/Transforms/InstCombine/odr-linkage.ll new file mode 100644 index 0000000..96f8833 --- /dev/null +++ b/test/Transforms/InstCombine/odr-linkage.ll @@ -0,0 +1,19 @@ +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep {ret i32 10} + +@g1 = available_externally constant i32 1 +@g2 = linkonce_odr constant i32 2 +@g3 = weak_odr constant i32 3 +@g4 = internal constant i32 4 + +define i32 @test() { + %A = load i32* @g1 + %B = load i32* @g2 + %C = load i32* @g3 + %D = load i32* @g4 + + %a = add i32 %A, %B + %b = add i32 %a, %C + %c = add i32 %b, %D + ret i32 %c +} +
\ No newline at end of file |