From: Chandler Carruth Date: Wed, 11 Jan 2012 18:36:12 +0000 (+0000) Subject: Revert r147945 which disabled an addressing mode transformation. I had X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=11f0e7b158d669a8c630068a0d8bdd107caef487;p=oota-llvm.git Revert r147945 which disabled an addressing mode transformation. I had hoped this would revive one of the llvm-gcc selfhost build bots, but it didn't so it doesn't appear that my transform is the culprit. If anyone else is seeing failures, please let me know! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147957 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp index b155f742d64..441267a2a4d 100644 --- a/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -847,10 +847,6 @@ static bool FoldMaskAndShiftToScale(SelectionDAG &DAG, SDValue N, uint64_t Mask, SDValue Shift, SDValue X, X86ISelAddressMode &AM) { - // FIXME!! Hack to disable this and see if it is responsible for a miscompile - // on llvm-gcc's selfhost. - return true; - if (Shift.getOpcode() != ISD::SRL || !Shift.hasOneUse() || !isa(Shift.getOperand(1))) return true; diff --git a/test/CodeGen/X86/fold-and-shift.ll b/test/CodeGen/X86/fold-and-shift.ll index 816ab97e31b..93baa0e0eee 100644 --- a/test/CodeGen/X86/fold-and-shift.ll +++ b/test/CodeGen/X86/fold-and-shift.ll @@ -39,11 +39,11 @@ define i32 @t3(i16* %i.ptr, i32* %arr) { ; To make matters worse, because of the two-phase zext of %i and their reuse in ; the function, the DAG can get confusing trying to re-use both of them and ; prevent easy analysis of the mask in order to match this. -; BROKEN: t3: -; BROKEN-NOT: and -; BROKEN: shrl -; BROKEN: addl (%{{...}},%{{...}},4), -; BROKEN: ret +; CHECK: t3: +; CHECK-NOT: and +; CHECK: shrl +; CHECK: addl (%{{...}},%{{...}},4), +; CHECK: ret entry: %i = load i16* %i.ptr @@ -58,11 +58,11 @@ entry: define i32 @t4(i16* %i.ptr, i32* %arr) { ; A version of @t3 that has more zero extends and more re-use of intermediate ; values. This exercise slightly different bits of canonicalization. -; BROKEN: t4: -; BROKEN-NOT: and -; BROKEN: shrl -; BROKEN: addl (%{{...}},%{{...}},4), -; BROKEN: ret +; CHECK: t4: +; CHECK-NOT: and +; CHECK: shrl +; CHECK: addl (%{{...}},%{{...}},4), +; CHECK: ret entry: %i = load i16* %i.ptr