Files
clang-p2996/llvm/test/Transforms/GlobalOpt/externally-initialized.ll
Bjorn Pettersson 8ebb3eac02 [test] Use -passes syntax when specifying pipeline in some more tests
The legacy PM is deprecated, so update a bunch of lit tests running
opt to use the new PM syntax when specifying the pipeline.
In this patch focus has been put on test cases for ConstantMerge,
ConstraintElimination, CorrelatedValuePropagation, GlobalDCE,
GlobalOpt, SCCP, TailCallElim and PredicateInfo.

Differential Revision: https://reviews.llvm.org/D114516
2021-11-27 09:52:55 +01:00

38 lines
1.0 KiB
LLVM

; RUN: opt < %s -S -passes=globalopt | FileCheck %s
; This global is externally_initialized, which may modify the value between
; it's static initializer and any code in this module being run, so the only
; write to it cannot be merged into the static initialiser.
; CHECK: @a = internal unnamed_addr externally_initialized global i32 undef
@a = internal externally_initialized global i32 undef
; This global is stored to by the external initialization, so cannot be
; constant-propagated and removed, despite the fact that there are no writes
; to it.
; CHECK: @b = internal unnamed_addr externally_initialized global i32 undef
@b = internal externally_initialized global i32 undef
define void @foo() {
; CHECK-LABEL: foo
entry:
; CHECK: store i32 42, i32* @a
store i32 42, i32* @a
ret void
}
define i32 @bar() {
; CHECK-LABEL: bar
entry:
; CHECK: %val = load i32, i32* @a
%val = load i32, i32* @a
ret i32 %val
}
define i32 @baz() {
; CHECK-LABEL: baz
entry:
; CHECK: %val = load i32, i32* @b
%val = load i32, i32* @b
ret i32 %val
}