Files
clang-p2996/llvm/test/Transforms/GlobalOpt/pr61674.ll
Nikita Popov 84717a78a3 [GlobalOpt] Fix dead const handling in pointer root user cleanup (PR61674)
Rather than cleanup up dead constant expressions as we go along,
do this once at the end. This aligns it with the
CleanupConstantGlobalUsers() implementation and avoids
any invalidation issues.

Fixes https://github.com/llvm/llvm-project/issues/61674.
2023-03-24 14:19:43 +01:00

22 lines
876 B
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
; RUN: opt -S -passes=globalopt < %s | FileCheck %s
; Test handling of dead constant expressions in CleanupPointerRootUsers().
@g = internal global [2 x [1 x [6 x ptr]]] zeroinitializer
define void @test() {
; CHECK-LABEL: define void @test() local_unnamed_addr {
; CHECK-NEXT: ret void
;
store ptr null, ptr getelementptr inbounds ([2 x [1 x [6 x ptr]]], ptr @g, i32 0, i32 1), align 1
ret void
dead:
zext i1 icmp ne (ptr getelementptr inbounds ([2 x [1 x [6 x ptr]]], ptr @g, i32 0, i32 1), ptr getelementptr inbounds ([6 x ptr], ptr getelementptr inbounds ([2 x [1 x [6 x ptr]]], ptr @g, i32 0, i32 1), i32 0, i32 5)) to i16
ret void
}
; uselistorder directives
uselistorder ptr getelementptr inbounds ([2 x [1 x [6 x ptr]]], ptr @g, i32 0, i32 1), { 1, 2, 0 }