Hi Artem,
I’ve uploaded a patch to remove the alignment. Thanks, -Betul From: Artem Belevich [mailto:t...@google.com] Sent: Tuesday, March 29, 2016 3:15 PM To: Betul Buyukkurt <bet...@codeaurora.org> Cc: cfe-commits <cfe-commits@lists.llvm.org> Subject: Re: r264783 - [PGO] Move the instrumentation point closer to the value site. Hi, FYI, cxx-indirect-call.cpp test fails on platforms with different alignment. It may help to either use specific target or change your patterns to accommodate other targets. --Artem ******************** TEST 'Clang :: Profile/cxx-indirect-call.cpp' FAILED ******************** Script: -- /usr/local/google/home/tra/work/llvm/build/gpu/release/./bin/clang --driver-mode=g++ /work/tra/llvm/tools/clang/test/Profile/cxx-indirect-call.cpp -o - -emit-llvm -S -fprofile-instr-generate -mllvm -enable-value-profiling -fexceptions -target x86_64-unknown-linux-gnu | /usr/local/google/home/tra/work/llvm/build/gpu/release/./bin/FileCheck /work/tra/llvm/tools/clang/test/Profile/cxx-indirect-call.cpp -- Exit Code: 1 Command Output (stderr): -- /work/tra/llvm/tools/clang/test/Profile/cxx-indirect-call.cpp:8:11: error: expected string not found in input // CHECK: [[REG1:%[0-9]+]] = load void ()*, void ()** @foo, align 4 ^ <stdin>:1:1: note: scanning from here ; ModuleID = '/work/tra/llvm/tools/clang/test/Profile/cxx-indirect-call.cpp' ^ <stdin>:27:2: note: possible intended match here %11 = load void ()*, void ()** @foo, align 8 ^ -- On Tue, Mar 29, 2016 at 1:44 PM, Betul Buyukkurt via cfe-commits <cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org> > wrote: Author: betulb Date: Tue Mar 29 15:44:09 2016 New Revision: 264783 URL: http://llvm.org/viewvc/llvm-project?rev=264783 <http://llvm.org/viewvc/llvm-project?rev=264783&view=rev> &view=rev Log: [PGO] Move the instrumentation point closer to the value site. For terminator instructions, the value profiling instrumentation happens in a basic block other than where the value site resides. This CR moves the instrumentation point prior to the value site. Mostly NFC. Added: cfe/trunk/test/Profile/cxx-indirect-call.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenPGO.cpp cfe/trunk/test/Profile/c-indirect-call.c Modified: cfe/trunk/lib/CodeGen/CodeGenPGO.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenPGO.cpp?rev=264783 <http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenPGO.cpp?rev=264783&r1=264782&r2=264783&view=diff> &r1=264782&r2=264783&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CodeGenPGO.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenPGO.cpp Tue Mar 29 15:44:09 2016 @@ -757,10 +757,10 @@ void CodeGenPGO::valueProfile(CGBuilderT bool InstrumentValueSites = CGM.getCodeGenOpts().hasProfileClangInstr(); if (InstrumentValueSites && RegionCounterMap) { - llvm::LLVMContext &Ctx = CGM.getLLVMContext(); - auto *I8PtrTy = llvm::Type::getInt8PtrTy(Ctx); + auto BuilderInsertPoint = Builder.saveIP(); + Builder.SetInsertPoint(ValueSite); llvm::Value *Args[5] = { - llvm::ConstantExpr::getBitCast(FuncNameVar, I8PtrTy), + llvm::ConstantExpr::getBitCast(FuncNameVar, Builder.getInt8PtrTy()), Builder.getInt64(FunctionHash), Builder.CreatePtrToInt(ValuePtr, Builder.getInt64Ty()), Builder.getInt32(ValueKind), @@ -768,6 +768,7 @@ void CodeGenPGO::valueProfile(CGBuilderT }; Builder.CreateCall( CGM.getIntrinsic(llvm::Intrinsic::instrprof_value_profile), Args); + Builder.restoreIP(BuilderInsertPoint); return; } Modified: cfe/trunk/test/Profile/c-indirect-call.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Profile/c-indirect-call.c?rev=264783 <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Profile/c-indirect-call.c?rev=264783&r1=264782&r2=264783&view=diff> &r1=264782&r2=264783&view=diff ============================================================================== --- cfe/trunk/test/Profile/c-indirect-call.c (original) +++ cfe/trunk/test/Profile/c-indirect-call.c Tue Mar 29 15:44:09 2016 @@ -1,13 +1,14 @@ -// Check the data structures emitted by instrumentation. +// Check the value profiling instrinsics emitted by instrumentation. + // RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name c-indirect-call.c %s -o - -emit-llvm -fprofile-instrument=clang -mllvm -enable-value-profiling | FileCheck %s void (*foo)(void); int main(void) { // CHECK: [[REG1:%[0-9]+]] = load void ()*, void ()** @foo, align 8 -// CHECK-NEXT: call void [[REG1]]() // CHECK-NEXT: [[REG2:%[0-9]+]] = ptrtoint void ()* [[REG1]] to i64 // CHECK-NEXT: call void @__llvm_profile_instrument_target(i64 [[REG2]], i8* bitcast ({{.*}}* @__profd_main to i8*), i32 0) +// CHECK-NEXT: call void [[REG1]]() foo(); return 0; } Added: cfe/trunk/test/Profile/cxx-indirect-call.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Profile/cxx-indirect-call.cpp?rev=264783 <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Profile/cxx-indirect-call.cpp?rev=264783&view=auto> &view=auto ============================================================================== --- cfe/trunk/test/Profile/cxx-indirect-call.cpp (added) +++ cfe/trunk/test/Profile/cxx-indirect-call.cpp Tue Mar 29 15:44:09 2016 @@ -0,0 +1,21 @@ +// Check the value profiling instrinsics emitted by instrumentation. + +// RUN: %clangxx %s -o - -emit-llvm -S -fprofile-instr-generate -mllvm -enable-value-profiling -fexceptions -target %itanium_abi_triple | FileCheck %s + +void (*foo) (void); + +int main(int argc, const char *argv[]) { +// CHECK: [[REG1:%[0-9]+]] = load void ()*, void ()** @foo, align 4 +// CHECK-NEXT: [[REG2:%[0-9]+]] = ptrtoint void ()* [[REG1]] to i64 +// CHECK-NEXT: call void @__llvm_profile_instrument_target(i64 [[REG2]], i8* bitcast ({{.*}}* @__profd_main to i8*), i32 0) +// CHECK-NEXT: invoke void [[REG1]]() + try { + foo(); + } catch (int) {} + return 0; +} + +// CHECK: declare void @__llvm_profile_instrument_target(i64, i8*, i32) + + + _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits -- --Artem Belevich
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits