blob: 360327bf05ced5b5ce7116b0fa32b38327b41b3c [file]
; REQUIRES: x86-registered-target
; RUN: opt -disable-output -passes='infer-address-spaces<assume-default-is-flat-addrspace>' \
; RUN: -mtriple=x86_64-unknown-unknown %s
; InferAddressSpaces can queue the same dead instruction more than once.
; Deleting an earlier entry invalidates later raw pointers, so the deletion
; worklist must track erased values safely.
@global = addrspace(1) global i32 0
define void @overlapping_dead_inferred_addresses() {
entry:
br label %body
exit:
%base = inttoptr i64 ptrtoint (ptr addrspacecast (ptr addrspace(1) @global to ptr) to i64) to ptr
%unused = getelementptr i8, ptr %base, i64 0
ret void
body:
store i32 0, ptr inttoptr (i64 ptrtoint (ptr addrspace(1) @global to i64) to ptr), align 4
br label %exit
}
uselistorder ptr addrspace(1) @global, { 1, 0 }