[clang] [llvm] [LICM] Sink unused l-invariant loads in preheader. (PR #157559)

Vigneshwar Jayakumar via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 25 08:49:40 PDT 2025


VigneshwarJ wrote:

> ```llvm
> ; RUN: opt -S -passes="loop-mssa(loop-simplifycfg,licm<no-allowspeculation>,loop-rotate,simple-loop-unswitch)" < %s
> 
> 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-pc-linux-gnu"
> 
> define void @_ZN4ncnnL8rnn_int8ERKNS_3MatERS0_iS2_PKfS2_S2_S5_S3_RKNS_6OptionE.omp_outlined(ptr %0) {
>   %2 = alloca i32, align 4
>   call void @llvm.lifetime.start.p0(ptr %2)
>   br label %3
> 
> 3:                                                ; preds = %5, %1
>   %4 = load i32, ptr null, align 4
>   br label %.preheader
> 
> .preheader:                                       ; preds = %7, %3
>   %.049 = phi i32 [ %8, %7 ], [ 0, %3 ]
>   br i1 false, label %7, label %5
> 
> 5:                                                ; preds = %.preheader
>   %6 = load ptr, ptr %0, align 8
>   store float 0.000000e+00, ptr %6, align 4
>   br label %3
> 
> 7:                                                ; preds = %.preheader
>   %8 = add i32 0, 0
>   br label %.preheader
> }
> 
> ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
> declare void @llvm.lifetime.start.p0(ptr captures(none)) #0
> 
> attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
> ```

I dont see this crash. 

https://github.com/llvm/llvm-project/pull/157559


More information about the llvm-commits mailing list