From c865802828b5bf5236d35b05dc1015d72a92a50b Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Wed, 11 Oct 2017 10:49:31 -0400 Subject: [PATCH] disable phi-node gc-root refinement fix #24098 ref #24035 --- src/llvm-late-gc-lowering.cpp | 14 ++++++++------ test/codegen.jl | 9 +++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp index b21b4c88c06dc..de5452a003cf5 100644 --- a/src/llvm-late-gc-lowering.cpp +++ b/src/llvm-late-gc-lowering.cpp @@ -861,14 +861,16 @@ State LateLowerGCFrame::LocalScan(Function &F) { continue; auto Num = LiftPhi(S, Phi); auto lift = cast(S.ReversePtrNumbering[Num]); - SmallVector RefinedPtr(nIncoming); - for (unsigned i = 0; i < nIncoming; ++i) - RefinedPtr[i] = Number(S, lift->getIncomingValue(i)); + SmallVector RefinedPtr(0); + // DISABLED DUE TO BUG IN THE ALGORITHM (#24098) + //for (unsigned i = 0; i < nIncoming; ++i) + // RefinedPtr[i] = Number(S, lift->getIncomingValue(i)); S.Refinements[Num] = std::move(RefinedPtr); } else { - SmallVector RefinedPtr(nIncoming); - for (unsigned i = 0; i < nIncoming; ++i) - RefinedPtr[i] = Number(S, Phi->getIncomingValue(i)); + SmallVector RefinedPtr(0); + // DISABLED DUE TO BUG IN THE ALGORITHM (#24098) + //for (unsigned i = 0; i < nIncoming; ++i) + // RefinedPtr[i] = Number(S, Phi->getIncomingValue(i)); MaybeNoteDef(S, BBS, Phi, BBS.Safepoints, std::move(RefinedPtr)); for (unsigned i = 0; i < nIncoming; ++i) { BBState &IncomingBBS = S.BBStates[Phi->getIncomingBlock(i)]; diff --git a/test/codegen.jl b/test/codegen.jl index 6b8244b2b439d..d59ce83e018b2 100644 --- a/test/codegen.jl +++ b/test/codegen.jl @@ -290,8 +290,9 @@ end @test g22421_2(Ref(7), Ref(8), false) === 24 if opt_level > 0 - @test !contains(get_llvm(g22421_1, Tuple{Base.RefValue{Int},Base.RefValue{Int},Bool}), - "%gcframe") - @test !contains(get_llvm(g22421_2, Tuple{Base.RefValue{Int},Base.RefValue{Int},Bool}), - "%gcframe") + # Disable temporarily. Don't use `@test_broken` since these won't reliably fail either + # @test !contains(get_llvm(g22421_1, Tuple{Base.RefValue{Int},Base.RefValue{Int},Bool}), + # "%gcframe") + # @test !contains(get_llvm(g22421_2, Tuple{Base.RefValue{Int},Base.RefValue{Int},Bool}), + # "%gcframe") end