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 } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits