-
Notifications
You must be signed in to change notification settings - Fork 15.1k
Closed
Description
@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [
{ i32, ptr, ptr } { i32 65535, ptr @ctor, ptr null }
]
@g = global { i32, i32 } { i32 0, i32 1 }
define internal void @ctor() {
call void @llvm.memset.p0.i64(ptr @g, i8 0, i64 8, i1 false)
ret void
}
declare void @llvm.memset.p0.i64(ptr, i8, i64, i1)
; RUN: opt -globalopt < %s
@llvm.global_ctors = appending global [0 x { i32, ptr, ptr }] zeroinitializer
@g = local_unnamed_addr global { i32, i32 } { i32 0, i32 1 }
The memset is removed, but the global is not zeroed. This is because
llvm-project/llvm/lib/Transforms/Utils/Evaluator.cpp
Lines 441 to 442 in 10f7255
Constant *DestVal = | |
ComputeLoadResult(getVal(Ptr), MSI->getValue()->getType()); |