Because the default CallingConv of builtins is CallingConv::C before LLVM3.7 and CallingConv::SPIR_FUNC in LLVM 3.7. And call instruction's CallingConv::C.
In createInstructionCombiningPass, if call and callee's calling conventions don't match, the call is replaced to undefined. So need move createStripAttributesPass before createInstructionCombiningPass, because createStripAttributesPass will change all builtins' calling convention to CallingConv::C by force. > -----Original Message----- > From: Song, Ruiling > Sent: Tuesday, October 13, 2015 10:28 > To: Yang, Rong R; [email protected] > Cc: Yang, Rong R > Subject: RE: [Beignet] [PATCH 3/5] GBE: Move createStripAttributesPass > before createInstructionCombiningPass. > > The patchset LGTM except this one, I think we still need to make clear what > goes wrong here. > > Thanks! > Ruiling > > -----Original Message----- > > From: Beignet [mailto:[email protected]] On Behalf > > Of Yang Rong > > Sent: Wednesday, September 16, 2015 4:50 PM > > To: [email protected] > > Cc: Yang, Rong R > > Subject: [Beignet] [PATCH 3/5] GBE: Move createStripAttributesPass > > before createInstructionCombiningPass. > > > > Otherwise, createInstructionCombiningPass will convert some call to > > illegal instruction in llvm3.7, for example utest compiler_time_stamp > > and test_load_program_from_spir. > > > > Signed-off-by: Yang Rong <[email protected]> > > --- > > backend/src/llvm/llvm_to_gen.cpp | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/backend/src/llvm/llvm_to_gen.cpp > > b/backend/src/llvm/llvm_to_gen.cpp > > index 538d1c5..24d4be7 100644 > > --- a/backend/src/llvm/llvm_to_gen.cpp > > +++ b/backend/src/llvm/llvm_to_gen.cpp > > @@ -110,6 +110,7 @@ namespace gbe > > MPM.add(createTypeBasedAliasAnalysisPass()); > > MPM.add(createBasicAliasAnalysisPass()); > > MPM.add(createIntrinsicLoweringPass()); > > + MPM.add(createStripAttributesPass()); // Strip unsupported > attributes and > > calling conventions. > > MPM.add(createSamplerFixPass()); > > MPM.add(createGlobalOptimizerPass()); // Optimize out global vars > > > > @@ -119,7 +120,6 @@ namespace gbe > > MPM.add(createInstructionCombiningPass());// Clean up after IPCP & > DAE > > MPM.add(createCFGSimplificationPass()); // Clean up after IPCP & DAE > > MPM.add(createPruneEHPass()); // Remove dead EH info > > - MPM.add(createStripAttributesPass()); // Strip unsupported > attributes and > > calling conventions. > > MPM.add(createBarrierNodupPass(false)); // remove noduplicate > fnAttr > > before inlining. > > MPM.add(createFunctionInliningPass(20000)); > > MPM.add(createBarrierNodupPass(true)); // restore noduplicate > fnAttr after > > inlining. > > -- > > 1.8.3.2 > > > > _______________________________________________ > > Beignet mailing list > > [email protected] > > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
