1f4a2713aSLionel Sambuc // Make sure -fno-inline-functions is behaving correctly. 2f4a2713aSLionel Sambuc // rdar://10972766 3f4a2713aSLionel Sambuc 4f4a2713aSLionel Sambuc // RUN: %clang_cc1 -O3 -fno-inline -fno-inline-functions -emit-llvm %s -o - | FileCheck -check-prefix=NOINLINE %s 5f4a2713aSLionel Sambuc dont_inline_me(int a,int b)6f4a2713aSLionel Sambucinline int dont_inline_me(int a, int b) { return(a+b); } 7f4a2713aSLionel Sambuc inline_me(int a,int b)8*0a6a1f1dSLionel Sambucinline __attribute__ ((__always_inline__)) int inline_me(int a, int b) { return(a*b); } 9*0a6a1f1dSLionel Sambuc 10f4a2713aSLionel Sambuc volatile int *pa = (int*) 0x1000; foo()11f4a2713aSLionel Sambucvoid foo() { 12f4a2713aSLionel Sambuc // NOINLINE: @foo 13f4a2713aSLionel Sambuc // NOINLINE: dont_inline_me 14f4a2713aSLionel Sambuc // NOINLINE-NOT: inlinehint 15f4a2713aSLionel Sambuc pa[0] = dont_inline_me(pa[1],pa[2]); 16*0a6a1f1dSLionel Sambuc // NOINLINE-NOT: inline_me 17*0a6a1f1dSLionel Sambuc pa[3] = inline_me(pa[4],pa[5]); 18f4a2713aSLionel Sambuc } 19*0a6a1f1dSLionel Sambuc 20*0a6a1f1dSLionel Sambuc // NOINLINE: Function Attrs: noinline 21*0a6a1f1dSLionel Sambuc // NOINLINE: @dont_inline_me 22