Home | History | Annotate | Download | only in Inline
      1 ; RUN: opt -S -Oz < %s | FileCheck %s -check-prefix=OZ
      2 ; RUN: opt -S -O2 < %s | FileCheck %s -check-prefix=O2
      3 
      4 ; The inline threshold for a function with the optsize attribute is currently
      5 ; the same as the global inline threshold for -Os. Check that the optsize
      6 ; function attribute don't alter the function specific inline threshold if the
      7 ; global inline threshold is lower (as for -Oz).
      8 
      9 @a = global i32 4
     10 
     11 ; This function should be larger than the inline threshold for -Oz (25), but
     12 ; smaller than the inline threshold for optsize (75).
     13 define i32 @inner() {
     14   %a1 = load volatile i32* @a
     15   %x1 = add i32 %a1,  %a1
     16   %a2 = load volatile i32* @a
     17   %x2 = add i32 %x1, %a2
     18   %a3 = load volatile i32* @a
     19   %x3 = add i32 %x2, %a3
     20   %a4 = load volatile i32* @a
     21   %x4 = add i32 %x3, %a4
     22   %a5 = load volatile i32* @a
     23   %x5 = add i32 %x3, %a5
     24   ret i32 %x5
     25 }
     26 
     27 ; @inner() should be inlined for -O2 but not for -Oz.
     28 ; OZ: call
     29 ; O2-NOT: call
     30 define i32 @outer() optsize {
     31    %r = call i32 @inner()
     32    ret i32 %r
     33 }
     34