Teresa Johnson | 7ab1f69 | 2016-06-09 01:14:13 +0000 | [diff] [blame] | 1 | ; RUN: opt -module-summary %s -o %t.o |
| 2 | ; RUN: opt -module-summary %p/Inputs/thinlto_internalize.ll -o %t2.o |
| 3 | |
| 4 | ; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold.so \ |
| 5 | ; RUN: --plugin-opt=thinlto \ |
| 6 | ; RUN: --plugin-opt=-import-instr-limit=0 \ |
| 7 | ; RUN: --plugin-opt=save-temps \ |
| 8 | ; RUN: -o %t3.o %t2.o %t.o |
Teresa Johnson | 9ba95f9 | 2016-08-11 14:58:12 +0000 | [diff] [blame] | 9 | ; RUN: llvm-dis %t.o.4.opt.bc -o - | FileCheck %s |
Teresa Johnson | 7ab1f69 | 2016-06-09 01:14:13 +0000 | [diff] [blame] | 10 | |
| 11 | ; f() should be internalized and eliminated after inlining |
| 12 | ; CHECK-NOT: @f() |
| 13 | |
Teresa Johnson | 27694571 | 2016-07-13 03:42:41 +0000 | [diff] [blame] | 14 | ; h() should be internalized after promotion, and eliminated after inlining |
| 15 | ; CHECK-NOT: @h.llvm. |
| 16 | |
Teresa Johnson | 7ab1f69 | 2016-06-09 01:14:13 +0000 | [diff] [blame] | 17 | target triple = "x86_64-unknown-linux-gnu" |
| 18 | define i32 @g() { |
| 19 | call void @f() |
Teresa Johnson | 27694571 | 2016-07-13 03:42:41 +0000 | [diff] [blame] | 20 | call void @h() |
Teresa Johnson | 7ab1f69 | 2016-06-09 01:14:13 +0000 | [diff] [blame] | 21 | ret i32 0 |
| 22 | } |
| 23 | define void @f() { |
| 24 | ret void |
| 25 | } |
Teresa Johnson | 27694571 | 2016-07-13 03:42:41 +0000 | [diff] [blame] | 26 | define internal void @h() { |
| 27 | ret void |
| 28 | } |