1437358beSMircea Trofin // Ensure calling bypassing the driver with -fembed-bitcode embeds bitcode pre- 2437358beSMircea Trofin // optimizations 3437358beSMircea Trofin // REQUIRES: x86-registered-target 4437358beSMircea Trofin // RUN: %clang_cc1 %s -O2 -emit-obj -triple=x86_64-unknown-linux-gnu -o %t.o -fembed-bitcode=all 5437358beSMircea Trofin // RUN: llvm-objcopy --dump-section=.llvmbc=%t.bc %t.o /dev/null 6437358beSMircea Trofin 7437358beSMircea Trofin // Also check that the .llvmcmd section captures the optimization options. 8437358beSMircea Trofin // RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=CHECK-BC 9437358beSMircea Trofin // RUN: llvm-objcopy --dump-section=.llvmcmd=- %t.o /dev/null | FileCheck %s --check-prefix=CHECK-CMD 10437358beSMircea Trofin 11fd739804SFangrui Song // CHECK-BC-LABEL: define{{.*}} void @bar() #0 { 12437358beSMircea Trofin // CHECK-BC-NEXT: entry: 13437358beSMircea Trofin // CHECK-BC-NEXT: ret void 14437358beSMircea Trofin // CHECK-BC-NEXT: } 15fd739804SFangrui Song // CHECK-BC-LABEL: define{{.*}} void @foo() #1 { 16437358beSMircea Trofin // CHECK-BC-NEXT: entry: 17437358beSMircea Trofin // CHECK-BC-NEXT: call void @bar() 18437358beSMircea Trofin // CHECK-BC-NEXT: ret void 19437358beSMircea Trofin // CHECK-BC-NEXT: } 20437358beSMircea Trofin // CHECK-BC-LABEL: attributes #0 = {{.*}} alwaysinline 21437358beSMircea Trofin // CHECK-CMD: -O2 22437358beSMircea Trofin bar(void)23*7de71613SAaron Ballman__attribute__((always_inline)) void bar(void) { 24437358beSMircea Trofin return; 25437358beSMircea Trofin } 26437358beSMircea Trofin foo(void)27*7de71613SAaron Ballmanvoid foo(void) { 28437358beSMircea Trofin bar(); 29437358beSMircea Trofin return; 30437358beSMircea Trofin } 31