summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/inline-optim.cc
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/CodeGen/inline-optim.cc')
-rw-r--r--clang/test/CodeGen/inline-optim.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/clang/test/CodeGen/inline-optim.cc b/clang/test/CodeGen/inline-optim.cc
new file mode 100644
index 00000000000..b3c3e521782
--- /dev/null
+++ b/clang/test/CodeGen/inline-optim.cc
@@ -0,0 +1,26 @@
+// Make sure -finline-functions family flags are behaving correctly.
+
+// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck -check-prefix=NOINLINE %s
+// RUN: %clang_cc1 -O3 -fno-inline-functions -emit-llvm %s -o - | FileCheck -check-prefix=NOINLINE %s
+// RUN: %clang_cc1 -finline-functions -emit-llvm %s -o - | FileCheck -check-prefix=INLINE %s
+
+inline int inline_hint(int a, int b) { return(a+b); }
+
+int inline_no_hint(int a, int b) { return (a/b); }
+
+inline __attribute__ ((__always_inline__)) int inline_always(int a, int b) { return(a*b); }
+
+volatile int *pa = (int*) 0x1000;
+void foo() {
+// NOINLINE-LABEL: @foo
+// INLINE-LABEL: @foo
+// NOINLINE: call i32 @inline_hint
+// INLINE-NOT: call i32 @inline_hint
+ pa[0] = inline_hint(pa[1],pa[2]);
+// NOINLINE-NOT: call i32 @inline_always
+// INLINE-NOT: call i32 @inline_always
+ pa[3] = inline_always(pa[4],pa[5]);
+// NOINLINE: call i32 @inline_no_hint
+// INLINE-NOT: call i32 @inline_no_hint
+ pa[6] = inline_no_hint(pa[7], pa[8]);
+}
OpenPOWER on IntegriCloud