31 lines · c
1// Ensure calling bypassing the driver with -fembed-bitcode embeds bitcode pre-2// optimizations3// REQUIRES: x86-registered-target4// RUN: %clang_cc1 %s -O2 -emit-obj -triple=x86_64-unknown-linux-gnu -o %t.o -fembed-bitcode=all5// RUN: llvm-objcopy --dump-section=.llvmbc=%t.bc %t.o /dev/null6 7// Also check that the .llvmcmd section captures the optimization options.8// RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=CHECK-BC9// RUN: llvm-objcopy --dump-section=.llvmcmd=- %t.o /dev/null | FileCheck %s --check-prefix=CHECK-CMD10 11// CHECK-BC-LABEL: define{{.*}} void @bar() #0 {12// CHECK-BC-NEXT: entry:13// CHECK-BC-NEXT: ret void14// CHECK-BC-NEXT: }15// CHECK-BC-LABEL: define{{.*}} void @foo() #1 {16// CHECK-BC-NEXT: entry:17// CHECK-BC-NEXT: call void @bar()18// CHECK-BC-NEXT: ret void19// CHECK-BC-NEXT: }20// CHECK-BC-LABEL: attributes #0 = {{.*}} alwaysinline21// CHECK-CMD: -O222 23__attribute__((always_inline)) void bar(void) {24 return;25}26 27void foo(void) {28 bar();29 return;30}31