14967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// Make sure -finline-functions family flags are behaving correctly. 24967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 34967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -triple i686-pc-win32 -emit-llvm %s -o - | FileCheck -check-prefix=NOINLINE %s 44967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -triple i686-pc-win32 -O3 -fno-inline-functions -emit-llvm %s -o - | FileCheck -check-prefix=NOINLINE %s 54967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -triple i686-pc-win32 -finline-hint-functions -emit-llvm %s -o - | FileCheck -check-prefix=HINT %s 64967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -triple i686-pc-win32 -finline-functions -emit-llvm %s -o - | FileCheck -check-prefix=INLINE %s 74967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 84967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarinline int inline_hint(int a, int b) { return(a+b); } 94967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarint inline_no_hint(int a, int b) { return (a/b); } 114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarinline __attribute__ ((__always_inline__)) int inline_always(int a, int b) { return(a*b); } 134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarvolatile int *pa = (int*) 0x1000; 154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarvoid foo() { 164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// NOINLINE-LABEL: @foo 174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// HINT-LABEL: @foo 184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// INLINE-LABEL: @foo 194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// NOINLINE: call i32 @inline_hint 204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// HINT-NOT: call i32 @inline_hint 214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// INLINE-NOT: call i32 @inline_hint 224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar pa[0] = inline_hint(pa[1],pa[2]); 234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// NOINLINE-NOT: call i32 @inline_always 244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// HINT-NOT: call i32 @inline_always 254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// INLINE-NOT: call i32 @inline_always 264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar pa[3] = inline_always(pa[4],pa[5]); 274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// NOINLINE: call i32 @inline_no_hint 284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// HINT: call i32 @inline_no_hint 294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// INLINE-NOT: call i32 @inline_no_hint 304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar pa[6] = inline_no_hint(pa[7], pa[8]); 314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} 32