[clang] 437358b - [clang]Test ensuring -fembed-bitcode passed to cc1 captures pre-opt bitcode.

Mircea Trofin via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 23 09:35:43 PDT 2020


Author: Mircea Trofin
Date: 2020-09-23T09:35:28-07:00
New Revision: 437358be7179d570de070bbb9b2e1154db727f6d

URL: https://github.com/llvm/llvm-project/commit/437358be7179d570de070bbb9b2e1154db727f6d
DIFF: https://github.com/llvm/llvm-project/commit/437358be7179d570de070bbb9b2e1154db727f6d.diff

LOG: [clang]Test ensuring -fembed-bitcode passed to cc1 captures pre-opt bitcode.

This is important to not regress because it allows us to capture pre-optimization
bitcode and options, and replay the full optimization pipeline.

Differential Revision: https://reviews.llvm.org/D88114

Added: 
    clang/test/Frontend/embed-bitcode-noopt.c
    clang/test/Frontend/embed-bitcode-noopt.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/clang/test/Frontend/embed-bitcode-noopt.c b/clang/test/Frontend/embed-bitcode-noopt.c
new file mode 100644
index 000000000000..06ceaaf80710
--- /dev/null
+++ b/clang/test/Frontend/embed-bitcode-noopt.c
@@ -0,0 +1,30 @@
+// Ensure calling bypassing the driver with -fembed-bitcode embeds bitcode pre-
+// optimizations
+// REQUIRES: x86-registered-target
+// RUN: %clang_cc1 %s -O2 -emit-obj -triple=x86_64-unknown-linux-gnu -o %t.o -fembed-bitcode=all
+// RUN: llvm-objcopy --dump-section=.llvmbc=%t.bc %t.o /dev/null
+
+// Also check that the .llvmcmd section captures the optimization options.
+// RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=CHECK-BC
+// RUN: llvm-objcopy --dump-section=.llvmcmd=- %t.o /dev/null | FileCheck %s --check-prefix=CHECK-CMD
+
+// CHECK-BC-LABEL: define void @bar() #0 {
+// CHECK-BC-NEXT: entry:
+// CHECK-BC-NEXT: ret void
+// CHECK-BC-NEXT: }
+// CHECK-BC-LABEL: define void @foo() #1 {
+// CHECK-BC-NEXT: entry:
+// CHECK-BC-NEXT: call void @bar()
+// CHECK-BC-NEXT: ret void
+// CHECK-BC-NEXT: }
+// CHECK-BC-LABEL: attributes #0 = {{.*}} alwaysinline
+// CHECK-CMD: -O2
+
+__attribute__((always_inline)) void bar() {
+  return;
+}
+
+void foo() {
+  bar();
+  return;
+}

diff  --git a/clang/test/Frontend/embed-bitcode-noopt.ll b/clang/test/Frontend/embed-bitcode-noopt.ll
new file mode 100644
index 000000000000..ecb676ded1bb
--- /dev/null
+++ b/clang/test/Frontend/embed-bitcode-noopt.ll
@@ -0,0 +1,30 @@
+; Ensure calling bypassing the driver with -fembed-bitcode embeds bitcode pre-
+; optimizations
+
+; RUN: %clang_cc1 -O2 -triple x86_64-unknown-linux-gnu -emit-obj %s -o %t.o -fembed-bitcode=all
+; RUN: llvm-objcopy --dump-section=.llvmbc=%t.bc %t.o /dev/null
+
+; Also check that the .llvmcmd section captures the optimization options.
+; RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=CHECK-BC
+; RUN: llvm-objcopy --dump-section=.llvmcmd=- %t.o /dev/null | FileCheck %s --check-prefix=CHECK-CMD
+
+; CHECK-BC-LABEL: define void @bar() #0 {
+; CHECK-BC-NEXT:  ret void  
+; CHECK-BC-NEXT: }
+; CHECK-BC-LABEL: define void @foo() {
+; CHECK-BC-NEXT: call void @bar()
+; CHECK-BC-NEXT: ret void
+; CHECK-BC-NEXT: }
+; CHECK-BC-LABEL: attributes #0 = { alwaysinline }
+; CHECK-CMD: -O2
+
+define void @bar() #0 {
+    ret void
+}
+
+define void @foo() {
+  call void @bar()
+  ret void
+}
+
+attributes #0 = { alwaysinline }


        


More information about the cfe-commits mailing list