Home | History | Annotate | Download | only in GlobalOpt
      1 ; RUN: opt < %s -globalopt -S | FileCheck %s
      2 
      3 ; CHECK-NOT: test
      4 
      5 declare void @aa()
      6 declare void @bb()
      7 
      8 ; Test that we can erase a function which has a blockaddress referring to it
      9 @test.x = internal unnamed_addr constant [3 x i8*] [i8* blockaddress(@test, %a), i8* blockaddress(@test, %b), i8* blockaddress(@test, %c)], align 16
     10 define internal void @test(i32 %n) nounwind noinline {
     11 entry:
     12   %idxprom = sext i32 %n to i64
     13   %arrayidx = getelementptr inbounds [3 x i8*]* @test.x, i64 0, i64 %idxprom
     14   %0 = load i8** %arrayidx, align 8
     15   indirectbr i8* %0, [label %a, label %b, label %c]
     16 
     17 a:
     18   tail call void @aa() nounwind
     19   br label %b
     20 
     21 b:
     22   tail call void @bb() nounwind
     23   br label %c
     24 
     25 c:
     26   ret void
     27 }
     28