From: Bing1 Yu Date: Wed, 18 Aug 2021 05:40:19 +0000 (+0800) Subject: [X86] [AMX] Fix the test case failure caused by D107544. X-Git-Tag: upstream/15.0.7~33617 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ffe58de39319b42b46319473263b59bd68ceee67;p=platform%2Fupstream%2Fllvm.git [X86] [AMX] Fix the test case failure caused by D107544. The issue can be duplicated when EXPENSIVE_CHECKS is specified for llvm build. Thank Simon report this issue at https://bugs.llvm.org/show_bug.cgi?id=51513. We need return correct value for the changed IR. Reviewed By: RKSimon, LuoYuanke Differential Revision: https://reviews.llvm.org/D108269 --- diff --git a/llvm/lib/Target/X86/X86LowerAMXType.cpp b/llvm/lib/Target/X86/X86LowerAMXType.cpp index a2bcc98..e150f2d 100644 --- a/llvm/lib/Target/X86/X86LowerAMXType.cpp +++ b/llvm/lib/Target/X86/X86LowerAMXType.cpp @@ -898,10 +898,12 @@ bool X86LowerAMXCast::combineAMXcast(TargetLibraryInfo *TLI) { Convert(Vec2TileInsts, Intrinsic::x86_cast_tile_to_vector); Convert(Tile2VecInsts, Intrinsic::x86_cast_vector_to_tile); - auto EraseInst = [](SmallVectorImpl &Insts) { + auto EraseInst = [&](SmallVectorImpl &Insts) { for (auto *Inst : Insts) { - if (Inst->use_empty()) + if (Inst->use_empty()) { Inst->eraseFromParent(); + Change = true; + } } }; @@ -912,7 +914,7 @@ bool X86LowerAMXCast::combineAMXcast(TargetLibraryInfo *TLI) { for (BasicBlock &BB : Func) { for (Instruction &I : BB) { if (isAMXCast(&I)) { - if (PHINode *PN = dyn_cast(I.getOperand(0))) + if (isa(I.getOperand(0))) PhiCastWorkList.push_back(&I); } } @@ -1036,17 +1038,18 @@ public: } bool runOnFunction(Function &F) override { + bool C = false; TargetMachine *TM = &getAnalysis().getTM(); TargetLibraryInfo *TLI = &getAnalysis().getTLI(F); X86LowerAMXCast LAC(F); - LAC.combineAMXcast(TLI); + C |= LAC.combineAMXcast(TLI); // There might be remaining AMXcast after combineAMXcast and they should be // handled elegantly. - LAC.transformAllAMXCast(); + C |= LAC.transformAllAMXCast(); X86LowerAMXType LAT(F); - bool C = LAT.visit(); + C |= LAT.visit(); // Prepare for fast register allocation at O0. // Todo: May better check the volatile model of AMX code, not just