Revert r174343, "When the target-independent DAGCombiner inferred a higher alignment...
authorNAKAMURA Takumi <geek4civic@gmail.com>
Tue, 5 Feb 2013 14:44:16 +0000 (14:44 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Tue, 5 Feb 2013 14:44:16 +0000 (14:44 +0000)
It caused hangups in compiling clang/lib/Parse/ParseDecl.cpp and clang/lib/Driver/Tools.cpp in stage2 on some hosts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174374 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/AArch64/func-argpassing.ll
test/CodeGen/X86/divide-by-constant.ll

index 39a8e82796abdaeed12baed990ba5a10845826fe..79ec227a22b2c7b87ac451db08cd91768d5dd112 100644 (file)
@@ -7199,15 +7199,12 @@ SDValue DAGCombiner::visitLOAD(SDNode *N) {
   // Try to infer better alignment information than the load already has.
   if (OptLevel != CodeGenOpt::None && LD->isUnindexed()) {
     if (unsigned Align = DAG.InferPtrAlignment(Ptr)) {
-      if (Align > LD->getAlignment()) {
-        SDValue NewLoad =
-               DAG.getExtLoad(LD->getExtensionType(), N->getDebugLoc(),
+      if (Align > LD->getAlignment())
+        return DAG.getExtLoad(LD->getExtensionType(), N->getDebugLoc(),
                               LD->getValueType(0),
                               Chain, Ptr, LD->getPointerInfo(),
                               LD->getMemoryVT(),
                               LD->isVolatile(), LD->isNonTemporal(), Align);
-        return CombineTo(N, NewLoad, SDValue(NewLoad.getNode(), 1), true);
-      }
     }
   }
 
index 760c8d49d07bf8e2cdd6934284b223c6a7094298..db58798ca5511bb12e93710bc8acf9326a56d04a 100644 (file)
@@ -178,8 +178,7 @@ define void @check_i128_stackalign(i32 %val0, i32 %val1, i32 %val2, i32 %val3,
     ; Nothing local on stack in current codegen, so first stack is 16 away
 ; CHECK: ldr {{x[0-9]+}}, [sp, #16]
     ; Important point is that we address sp+24 for second dword
-; CHECK: add     [[REG:x[0-9]+]], sp, #16
-; CHECK: ldr     {{x[0-9]+}}, {{\[}}[[REG]], #8]
+; CHECK: ldr {{x[0-9]+}}, [sp, #24]
     ret void
 }
 
index 9669d97cb7fa2b850b2b10d5f4249afba98b3a5a..8e7c13d8efa9cdc706e8db05e5a6aed7482c1e18 100644 (file)
@@ -56,9 +56,9 @@ entry:
   %div = sdiv i16 %x, 10
   ret i16 %div
 ; CHECK: test6:
-; CHECK: imull $26215, %eax, %ecx
-; CHECK: sarl $18, %ecx
-; CHECK: shrl $15, %eax
+; CHECK: imull $26215, %eax, %eax
+; CHECK: shrl  $31, %ecx
+; CHECK: sarl  $18, %eax
 }
 
 define i32 @test7(i32 %x) nounwind {