[PATCH] D33435: [SelectionDAG] reset NewNodesMustHaveLegalTypes flag between basic blocks

Guy Blank via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 6 22:52:17 PDT 2017


This revision was automatically updated to reflect the committed changes.
Closed by commit rL310239: [SelectionDAG] reset NewNodesMustHaveLegalTypes flag between basic blocks (authored by guyblank).

Changed prior to commit:
  https://reviews.llvm.org/D33435?vs=100044&id=109952#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D33435

Files:
  llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  llvm/trunk/test/CodeGen/AArch64/fold-constants.ll


Index: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -646,6 +646,9 @@
 void SelectionDAGISel::SelectBasicBlock(BasicBlock::const_iterator Begin,
                                         BasicBlock::const_iterator End,
                                         bool &HadTailCall) {
+  // Allow creating illegal types during DAG building for the basic block.
+  CurDAG->NewNodesMustHaveLegalTypes = false;
+
   // Lower the instructions. If a call is emitted as a tail call, cease emitting
   // nodes for this block.
   for (BasicBlock::const_iterator I = Begin; I != End && !SDB->HasTailCall; ++I) {
Index: llvm/trunk/test/CodeGen/AArch64/fold-constants.ll
===================================================================
--- llvm/trunk/test/CodeGen/AArch64/fold-constants.ll
+++ llvm/trunk/test/CodeGen/AArch64/fold-constants.ll
@@ -19,9 +19,19 @@
 
 ; PR25763 - folding constant vector comparisons with sign-extended result
 define <8 x i16> @dotests_458() {
+; CHECK-LABEL: .LCPI1_0:
+; CHECK:       .hword  0                       // 0x0
+; CHECK-NEXT:  .hword  0                       // 0x0
+; CHECK-NEXT:  .hword  65535                   // 0xffff
+; CHECK-NEXT:  .hword  0                       // 0x0
+; CHECK-NEXT:  .hword  0                       // 0x0
+; CHECK-NEXT:  .hword  0                       // 0x0
+; CHECK-NEXT:  .hword  0                       // 0x0
+; CHECK-NEXT:  .hword  0                       // 0x0
+
 ; CHECK-LABEL: dotests_458
-; CHECK:       movi d0, #0x00000000ff0000
-; CHECK-NEXT:  sshll v0.8h, v0.8b, #0
+; CHECK:       adrp    x8, .LCPI1_0
+; CHECK-NEXT:  ldr     q0, [x8, :lo12:.LCPI1_0]
 ; CHECK-NEXT:  ret
 entry:
   %vclz_v.i = call <8 x i8> @llvm.ctlz.v8i8(<8 x i8> <i8 127, i8 38, i8 -1, i8 -128, i8 127, i8 0, i8 0, i8 0>, i1 false) #6


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D33435.109952.patch
Type: text/x-patch
Size: 1988 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170807/bf7d62d6/attachment.bin>


More information about the llvm-commits mailing list