Quuxplusone / LLVMBugzillaTest

0 stars 0 forks source link

[LoopUnrollAndJam / LoopUnroll ] Instruction does not dominate all uses! #49630

Open Quuxplusone opened 3 years ago

Quuxplusone commented 3 years ago
Bugzilla Link PR50661
Status NEW
Importance P normal
Reported by Jonas Paulsson (paulsson@linux.vnet.ibm.com)
Reported on 2021-06-10 09:36:43 -0700
Last modified on 2021-06-10 23:58:39 -0700
Version trunk
Hardware PC Linux
CC david.green@arm.com, konndennsa@gmail.com, llvm-bugs@lists.llvm.org, nikita.ppv@gmail.com, paulsson@linux.vnet.ibm.com, whitneyt@ca.ibm.com
Fixed by commit(s)
Attachments tc_crash0_aftercreduce.ll (2637 bytes, text/plain)
Blocks
Blocked by
See also
Created attachment 24938
reduced testcase

opt -O3 ./tc_crash0_aftercreduce.ll -march=arch13 -S -o - -extra-vectorizer-
passes -enable-unroll-and-jam -allow-unroll-and-jam -instcombine-code-
sinking=false -unroll-and-jam-count=8 -keep-loops=false

Instruction does not dominate all uses!
  %i18 = and i32 %c.promoted, 4
  %i21 = and i32 %b.promoted, %i18

*** IR Dump After LCSSAPass on f ***
; Function Attrs: nofree norecurse nosync nounwind
define dso_local void @f() local_unnamed_addr #0 {
bb:
  store i32 9, i32* @a, align 4
  %c.promoted = load i32, i32* @c, align 4
  %b.promoted = load i32, i32* @b, align 4
  br label %bb8.outer

bb8.outer:                                        ; preds = %bb14, %bb
  %i258.ph = phi i32 [ %i25, %bb14 ], [ 9, %bb ]
  %i216.ph = phi i32 [ %i21, %bb14 ], [ %b.promoted, %bb ]
  %i174.ph = phi i32 [ %i18, %bb14 ], [ %c.promoted, %bb ]
  br label %bb8

bb8:                                              ; preds = %bb8.outer, %bb8
  %i1.0 = phi i32 [ %i13, %bb8 ], [ 0, %bb8.outer ]
  %i10 = icmp ult i32 %i1.0, 2
  %i13 = add nuw nsw i32 %i1.0, 1
  br i1 %i10, label %bb8, label %bb14

bb14:                                             ; preds = %bb8
  %i18 = and i32 %i174.ph, 4
  %i21 = and i32 %i216.ph, %i18
  %i25 = add nsw i32 %i258.ph, -4
  %i6.not = icmp eq i32 %i25, 0
  br i1 %i6.not, label %bb26, label %bb8.outer

bb26:                                             ; preds = %bb14
  %i18.lcssa = phi i32 [ %i18, %bb14 ]
  %i21.lcssa = phi i32 [ %i21, %bb14 ]
  %i25.lcssa = phi i32 [ %i25, %bb14 ]
  store i32 %i18.lcssa, i32* @c, align 4
  store i32 %i21.lcssa, i32* @b, align 4
  store i32 %i25.lcssa, i32* @a, align 4
  ret void
}

*** IR Dump After LoopUnrollPass on f ***
...
bb8.outer:                                        ; preds = %bb
  %i21 = and i32 %b.promoted, %i18
  %i18 = and i32 %c.promoted, 4
...
Quuxplusone commented 3 years ago

Attached tc_crash0_aftercreduce.ll (2637 bytes, text/plain): reduced testcase