#
3fb5b18e |
| 24-Oct-2023 |
Mogball <jeff@modular.com> |
Revert 24633ea and 760e7d0 "Enable FoldImmediate for X86"
This reverts commits 24633eac38d46cd4b253ba53258165ee08d886cd and 760e7d00d142ba85fcf48c00e0acc14a355da7c3.
I have confirmed that these com
Revert 24633ea and 760e7d0 "Enable FoldImmediate for X86"
This reverts commits 24633eac38d46cd4b253ba53258165ee08d886cd and 760e7d00d142ba85fcf48c00e0acc14a355da7c3.
I have confirmed that these commits are introducing a new crash in the peephole optimizer. I have minimized a test case, which you can find below.
```llvmir ; ModuleID = 'bugpoint-reduced-simplified.bc' source_filename = "/mnt/big/modular/Kernels/mojo/Mogg/MOGG.mojo" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu"
declare dso_local void @foo({ { ptr, [4 x i64], [4 x i64], i1 }, { ptr, [4 x i64], [4 x i64], i1 } }, { ptr }, { ptr, i64, i8 })
define dso_local void @bad_fn(ptr %0, ptr %1, ptr %2) { %4 = load i64, ptr null, align 8 %5 = insertvalue [4 x i64] poison, i64 12, 1 %6 = insertvalue [4 x i64] %5, i64 poison, 2 %7 = insertvalue [4 x i64] %6, i64 poison, 3 %8 = insertvalue { ptr, [4 x i64], [4 x i64], i1 } poison, [4 x i64] %7, 1 %9 = insertvalue { ptr, [4 x i64], [4 x i64], i1 } %8, [4 x i64] poison, 2 %10 = insertvalue { ptr, [4 x i64], [4 x i64], i1 } %9, i1 poison, 3 %11 = icmp ne i64 %4, 1 %12 = or i1 false, %11 %13 = select i1 %12, i64 %4, i64 0 %14 = zext i1 %12 to i64 %15 = insertvalue [4 x i64] poison, i64 12, 1 %16 = insertvalue [4 x i64] %15, i64 poison, 2 %17 = insertvalue [4 x i64] %16, i64 %13, 3 %18 = insertvalue [4 x i64] poison, i64 %14, 3 %19 = icmp eq i64 0, 0 %20 = icmp eq i64 0, 0 %21 = icmp eq i64 %13, 0 %22 = and i1 %20, %19 %23 = select i1 %22, i1 %21, i1 false %24 = select i1 %23, i1 %12, i1 false %25 = insertvalue { ptr, [4 x i64], [4 x i64], i1 } poison, [4 x i64] %17, 1 %26 = insertvalue { ptr, [4 x i64], [4 x i64], i1 } %25, [4 x i64] %18, 2 %27 = insertvalue { ptr, [4 x i64], [4 x i64], i1 } %26, i1 %24, 3 %28 = insertvalue { { ptr, [4 x i64], [4 x i64], i1 }, { ptr, [4 x i64], [4 x i64], i1 } } undef, { ptr, [4 x i64], [4 x i64], i1 } %10, 0 %29 = insertvalue { { ptr, [4 x i64], [4 x i64], i1 }, { ptr, [4 x i64], [4 x i64], i1 } } %28, { ptr, [4 x i64], [4 x i64], i1 } %27, 1 br label %31
30: ; preds = %3 br label %softmax_pass
31: ; preds = %31 %exitcond.not.i = icmp eq i64 poison, 3 br i1 %exitcond.not.i, label %37, label %31
32: ; preds = %31 br i1 poison, label %34, label %33
33: ; preds = %32 br label %34
34: ; preds = %33, %32 br i1 poison, label %35, label %36
35: ; preds = %34 br label %softmax_pass
36: ; preds = %34 br i1 poison, label %37, label %.critedge.i
37: ; preds = %36 br i1 poison, label %38, label %.critedge.i
38: ; preds = %37 br i1 poison, label %40, label %39
39: ; preds = %38 br label %40
40: ; preds = %39, %38 br i1 poison, label %.lr.ph28.i, label %._crit_edge.i
.lr.ph28.i: ; preds = %40 br label %41
41: ; preds = %51, %.lr.ph28.i br i1 poison, label %.thread, label %42
42: ; preds = %41 br i1 poison, label %43, label %44
43: ; preds = %42 br label %45
44: ; preds = %42 br label %45
45: ; preds = %44, %43 br i1 poison, label %46, label %.thread
46: ; preds = %45 br label %47
.thread: ; preds = %45, %41 br label %47
47: ; preds = %.thread, %46 br i1 poison, label %51, label %48
48: ; preds = %47 br i1 poison, label %49, label %50
49: ; preds = %48 br label %51
50: ; preds = %48 br label %51
51: ; preds = %50, %49, %47 call void @foo({ { ptr, [4 x i64], [4 x i64], i1 }, { ptr, [4 x i64], [4 x i64], i1 } } %29, { ptr } poison, { ptr, i64, i8 } poison) br i1 poison, label %._crit_edge.i, label %41
._crit_edge.i: ; preds = %51, %40 br label %softmax_pass
.critedge.i: ; preds = %37, %36 br i1 poison, label %.lr.ph.i, label %softmax_pass
.lr.ph.i: ; preds = %.lr.ph.i, %.critedge.i store { ptr, [4 x i64], [4 x i64], i1 } %10, ptr poison, align 8 br i1 poison, label %.lr.ph.i, label %softmax_pass
softmax_pass: ; preds = %.lr.ph.i, %.critedge.i, %._crit_edge.i, %35, %30 ret void } ```
show more ...
|