xref: /llvm-project/llvm/test/Transforms/GlobalOpt/malloc-promote-addrspacecast.ll (revision 6923a67db8439616ffb48b215dca6cd0674b43f8)
13121816aSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals
23121816aSMatt Arsenault; RUN: opt -S -passes=globalopt < %s | FileCheck %s
33121816aSMatt Arsenaulttarget datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
43121816aSMatt Arsenault
53121816aSMatt Arsenaultdeclare noalias ptr @malloc(i64) allockind("alloc,uninitialized") allocsize(0)
63121816aSMatt Arsenault
73121816aSMatt Arsenault@G = internal global ptr null
83121816aSMatt Arsenault
93121816aSMatt Arsenaultdefine void @init() {
103121816aSMatt Arsenault; CHECK-LABEL: @init(
113121816aSMatt Arsenault; CHECK-NEXT:    ret void
123121816aSMatt Arsenault;
133121816aSMatt Arsenault  %malloccall = tail call ptr @malloc(i64 4)
143121816aSMatt Arsenault  store ptr %malloccall, ptr @G
153121816aSMatt Arsenault  %GV = load ptr, ptr @G
163121816aSMatt Arsenault  %addrspacecast = addrspacecast ptr %GV to ptr addrspace(1)
173121816aSMatt Arsenault  store i32 20, ptr addrspace(1) %addrspacecast
183121816aSMatt Arsenault  ret void
193121816aSMatt Arsenault}
203121816aSMatt Arsenault
213121816aSMatt Arsenaultdefine i32 @get() {
223121816aSMatt Arsenault; CHECK-LABEL: @get(
23*6923a67dSMatt Arsenault; CHECK-NEXT:    ret i32 20
243121816aSMatt Arsenault;
253121816aSMatt Arsenault  %GV = load ptr, ptr @G
263121816aSMatt Arsenault  %V = load i32, ptr %GV
273121816aSMatt Arsenault  ret i32 %V
283121816aSMatt Arsenault}
293121816aSMatt Arsenault
303121816aSMatt Arsenaultdefine void @foo(i64 %Size) nounwind noinline #0 {
313121816aSMatt Arsenault; CHECK-LABEL: @foo(
323121816aSMatt Arsenault; CHECK-NEXT:  entry:
333121816aSMatt Arsenault; CHECK-NEXT:    ret void
343121816aSMatt Arsenault;
353121816aSMatt Arsenaultentry:
363121816aSMatt Arsenault  %0 = load ptr, ptr @G, align 4
373121816aSMatt Arsenault  ret void
383121816aSMatt Arsenault}
393121816aSMatt Arsenault
403121816aSMatt Arsenaultattributes #0 = { null_pointer_is_valid }
413121816aSMatt Arsenault
423121816aSMatt Arsenault;.
43*6923a67dSMatt Arsenault; CHECK: attributes #[[ATTR0:[0-9]+]] = { noinline nounwind null_pointer_is_valid }
443121816aSMatt Arsenault;.
45