[llvm] [InstCombine] Extend folding of aggregate construction to cases when source aggregates are partially available (PR #100828)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 30 12:53:52 PDT 2024
weiguozhi wrote:
> This patch causes InstCombine to hang when building https://github.com/jqlang/jq:
>
> ```
> ; timeout 5s bin/opt -passes=instcombine reduced.ll -S
> define { i64, ptr } @minmax_by({ i64, ptr } %0, i1 %1, i1 %2, { i64, ptr } %3) {
> %5 = extractvalue { i64, ptr } %0, 0
> %6 = extractvalue { i64, ptr } %0, 1
> br label %7
>
> 7: ; preds = %14, %4
> %.sroa.01.0 = phi i64 [ %5, %4 ], [ %.sroa.01.1, %14 ]
> %.sroa.3.0 = phi ptr [ %6, %4 ], [ %.sroa.3.1, %14 ]
> br i1 %1, label %8, label %15
>
> 8: ; preds = %7
> br i1 %2, label %9, label %12
>
> 9: ; preds = %8
> %10 = extractvalue { i64, ptr } %3, 0
> %11 = extractvalue { i64, ptr } %3, 1
> br label %14
>
> 12: ; preds = %8
> %13 = getelementptr { i64, ptr }, ptr null, i32 0, i32 0
> br label %14
>
> 14: ; preds = %12, %9
> %.sroa.01.1 = phi i64 [ %10, %9 ], [ %.sroa.01.0, %12 ]
> %.sroa.3.1 = phi ptr [ %11, %9 ], [ %.sroa.3.0, %12 ]
> br label %7
>
> 15: ; preds = %7
> %.fca.0.insert = insertvalue { i64, ptr } zeroinitializer, i64 %.sroa.01.0, 0
> %.fca.1.insert = insertvalue { i64, ptr } %.fca.0.insert, ptr %.sroa.3.0, 1
> ret { i64, ptr } %.fca.1.insert
> }
> ```
https://github.com/llvm/llvm-project/pull/100828
More information about the llvm-commits
mailing list