Issue 180846
Summary [SLPVectorizer] Timeout after recent compiler change
Labels new issue
Assignees
Reporter boomanaiden154
    ```llvm
; ModuleID = './reduced.ll'
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "aarch64-grtev4-linux-gnu"

%struct.wombat = type { i32, i32 }

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(ptr captures(none)) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(ptr captures(none)) #0

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #1

; Function Attrs: mustprogress nounwind uwtable
define fastcc void @snork() #2 {
bb:
  %getelementptr = getelementptr inbounds nuw i8, ptr null, i64 40
  br label %bb1

bb1: ; preds = %bb1, %bb
  %phi = phi i32 [ 0, %bb ], [ %add45, %bb1 ]
  %phi2 = phi i32 [ 0, %bb ], [ %add46, %bb1 ]
  %phi3 = phi i32 [ 0, %bb ], [ %add47, %bb1 ]
  %phi4 = phi i32 [ 0, %bb ], [ %add48, %bb1 ]
  %or = or disjoint i64 0, 1
  %or5 = or disjoint i64 0, 2
  %or6 = or disjoint i64 0, 3
  %getelementptr7 = getelementptr inbounds nuw %struct.wombat, ptr %getelementptr, i64 %or5
  %getelementptr8 = getelementptr inbounds nuw %struct.wombat, ptr %getelementptr, i64 %or6
 %load = load i32, ptr %getelementptr7, align 8
  %load9 = load i32, ptr %getelementptr8, align 8
  %zext = zext i32 %load to i64
  %zext10 = zext i32 %load9 to i64
  %udiv = udiv i64 0, %zext
  %udiv11 = udiv i64 0, %zext10
  %mul = mul i64 %udiv, 5
  %mul12 = mul i64 %udiv11, 5
  %and = and i64 %mul, 4294967295
  %and13 = and i64 %mul12, 4294967295
  %add = add nuw nsw i64 %and, 3
  %add14 = add nuw nsw i64 %and13, 3
  %lshr = lshr i64 %add, 2
  %lshr15 = lshr i64 %add14, 2
  %getelementptr16 = getelementptr %struct.wombat, ptr null, i64 %or
  %getelementptr17 = getelementptr %struct.wombat, ptr null, i64 %or5
  %getelementptr18 = getelementptr i8, ptr %getelementptr16, i64 44
  %getelementptr19 = getelementptr i8, ptr %getelementptr17, i64 44
  %load20 = load i32, ptr %getelementptr18, align 4
  %load21 = load i32, ptr %getelementptr19, align 4
  %zext22 = zext i32 0 to i64
  %zext23 = zext i32 %load20 to i64
  %zext24 = zext i32 %load21 to i64
  %zext25 = zext i32 0 to i64
  %udiv26 = udiv i64 0, %zext22
 %udiv27 = udiv i64 0, %zext23
  %udiv28 = udiv i64 0, %zext24
  %udiv29 = udiv i64 0, %zext25
  %mul30 = mul i64 0, %udiv26
  %mul31 = mul i64 0, %udiv27
  %mul32 = mul i64 %lshr, %udiv28
  %mul33 = mul i64 %lshr15, %udiv29
  %trunc = trunc i64 %mul30 to i32
  %trunc34 = trunc i64 %mul31 to i32
  %trunc35 = trunc i64 %mul32 to i32
  %trunc36 = trunc i64 %mul33 to i32
  %add37 = add i32 %trunc, 31
  %add38 = add i32 %trunc34, 31
  %add39 = add i32 %trunc35, 31
  %add40 = add i32 %trunc36, 31
  %and41 = and i32 %add37, -32
  %and42 = and i32 %add38, -32
  %and43 = and i32 %add39, -32
 %and44 = and i32 %add40, -32
  %add45 = add i32 %and41, %phi
  %add46 = add i32 %and42, %phi2
  %add47 = add i32 %and43, %phi3
  %add48 = add i32 %and44, %phi4
  br label %bb1
}

; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write)
declare void @llvm.ubsantrap(i8 immarg) #3

; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #4

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { mustprogress nounwind uwtable "frame-pointer"="non-leaf-no-reserve" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="neoverse-n1" "target-features"="+aes,+crc,+dotprod,+fp-armv8,+fullfp16,+lse,+neon,+outline-atomics,+perfmon,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+v8.1a,+v8.2a,+v8a" "tune-cpu"="neoverse-v2" "use-sample-profile" "warn-stack-size"="8192" }
attributes #3 = { cold noreturn nounwind memory(inaccessiblemem: write) }
attributes #4 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
```

```bash
opt -passes="slp-vectorize" reduced.ll -disable-output`
```

Hangs.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to