Home | History | Annotate | Download | only in Inline
      1 ; Test that -inline-threshold overrides thresholds derived from opt levels.
      2 ; RUN: opt < %s -O2 -inline-threshold=500 -S  | FileCheck %s
      3 ; RUN: opt < %s -O3 -inline-threshold=500 -S  | FileCheck %s
      4 ; RUN: opt < %s -Os -inline-threshold=500 -S  | FileCheck %s
      5 ; RUN: opt < %s -Oz -inline-threshold=500 -S  | FileCheck %s
      6 
      7 @a = global i32 4
      8 
      9 define i32 @simpleFunction(i32 %a) #0 {
     10 entry:
     11   %a1 = load volatile i32, i32* @a
     12   %x1 = add i32 %a1,  %a1
     13   %cmp = icmp eq i32 %a1, 0
     14   br i1 %cmp, label %if.then, label %if.else
     15 if.then:
     16   %a2 = load volatile i32, i32* @a
     17   %x2_0 = add i32 %x1, %a2
     18   br label %if.else
     19 if.else:
     20   %x2 = phi i32 [ %x1, %entry ], [ %x2_0, %if.then ]
     21   %a3 = load volatile i32, i32* @a
     22   %x3 = add i32 %x2, %a3
     23   %a4 = load volatile i32, i32* @a
     24   %x4 = add i32 %x3, %a4
     25   %a5 = load volatile i32, i32* @a
     26   %x5 = add i32 %x4, %a5
     27   %a6 = load volatile i32, i32* @a
     28   %x6 = add i32 %x5, %a6
     29   %a7 = load volatile i32, i32* @a
     30   %x7 = add i32 %x6, %a7
     31   %a8 = load volatile i32, i32* @a
     32   %x8 = add i32 %x7, %a8
     33   %a9 = load volatile i32, i32* @a
     34   %x9 = add i32 %x8, %a9
     35   %a10 = load volatile i32, i32* @a
     36   %x10 = add i32 %x9, %a10
     37   %a11 = load volatile i32, i32* @a
     38   %x11 = add i32 %x10, %a11
     39   %a12 = load volatile i32, i32* @a
     40   %x12 = add i32 %x11, %a12
     41   %a13 = load volatile i32, i32* @a
     42   %x13 = add i32 %x12, %a13
     43   %a14 = load volatile i32, i32* @a
     44   %x14 = add i32 %x13, %a14
     45   %a15 = load volatile i32, i32* @a
     46   %x15 = add i32 %x14, %a15
     47   %a16 = load volatile i32, i32* @a
     48   %x16 = add i32 %x15, %a16
     49   %a17 = load volatile i32, i32* @a
     50   %x17 = add i32 %x16, %a17
     51   %a18 = load volatile i32, i32* @a
     52   %x18 = add i32 %x17, %a18
     53   %a19 = load volatile i32, i32* @a
     54   %x19 = add i32 %x18, %a19
     55   %a20 = load volatile i32, i32* @a
     56   %x20 = add i32 %x19, %a20
     57   %a21 = load volatile i32, i32* @a
     58   %x21 = add i32 %x20, %a21
     59   %a22 = load volatile i32, i32* @a
     60   %x22 = add i32 %x21, %a22
     61   %a23 = load volatile i32, i32* @a
     62   %x23 = add i32 %x22, %a23
     63   %a24 = load volatile i32, i32* @a
     64   %x24 = add i32 %x23, %a24
     65   %a25 = load volatile i32, i32* @a
     66   %x25 = add i32 %x24, %a25
     67   %a26 = load volatile i32, i32* @a
     68   %x26 = add i32 %x25, %a26
     69   %a27 = load volatile i32, i32* @a
     70   %x27 = add i32 %x26, %a27
     71   %a28 = load volatile i32, i32* @a
     72   %x28 = add i32 %x27, %a28
     73   %a29 = load volatile i32, i32* @a
     74   %x29 = add i32 %x28, %a29
     75   %add = add i32 %x29, %a
     76   ret i32 %add
     77 }
     78 
     79 ; Function Attrs: nounwind readnone uwtable
     80 define i32 @bar(i32 %a) #0 {
     81 ; CHECK-LABEL: @bar
     82 ; CHECK-NOT: call i32 @simpleFunction(i32 6)
     83 ; CHECK: ret
     84 entry:
     85   %i = tail call i32 @simpleFunction(i32 6)
     86   ret i32 %i
     87 }
     88 
     89 attributes #0 = { nounwind readnone uwtable }
     90