llvm-project/llvm/test/Transforms/InferAddressSpaces/optnone-func-unchanged.ll
Wenju He fe146e9b59
[InferAddressSpaces] Fix constant replace to avoid modifying other functions (#70611)
A constant value is unique in llvm context. InferAddressSpaces was
replacing its users in other functions as well. This leads to unexpected
behavior in our downstream use case after the pass.

InferAddressSpaces is a function passe, so it shall not modify functions
other than currently processed one.

Co-authored-by: Abhinav Gaba <abhinav.gaba@intel.com>

---------

Co-authored-by: Abhinav Gaba <abhinav.gaba@intel.com>
2023-11-13 13:28:56 +08:00

33 lines
1.1 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
; RUN: opt -assume-default-is-flat-addrspace -S -passes=infer-address-spaces < %s 2>&1 | FileCheck %s
@g = addrspace(1) global i32 0, align 4
define ptr @f2() {
; CHECK-LABEL: define ptr @f2() {
; CHECK-NEXT: entry:
; CHECK-NEXT: [[X2:%.*]] = addrspacecast ptr addrspace(1) @g to ptr
; CHECK-NEXT: ret ptr [[X2]]
;
entry:
%x1 = addrspacecast ptr addrspacecast (ptr addrspace(1) @g to ptr) to ptr addrspace(1)
%x2 = addrspacecast ptr addrspace(1) %x1 to ptr
ret ptr %x2
}
define ptr @f3() #0 {
; CHECK-LABEL: define ptr @f3(
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: entry:
; CHECK-NEXT: [[X1:%.*]] = addrspacecast ptr addrspacecast (ptr addrspace(1) @g to ptr) to ptr addrspace(1)
; CHECK-NEXT: [[X2:%.*]] = addrspacecast ptr addrspace(1) [[X1]] to ptr
; CHECK-NEXT: ret ptr [[X2]]
;
entry:
%x1 = addrspacecast ptr addrspacecast (ptr addrspace(1) @g to ptr) to ptr addrspace(1)
%x2 = addrspacecast ptr addrspace(1) %x1 to ptr
ret ptr %x2
}
attributes #0 = { noinline optnone }