xref: /llvm-project/llvm/test/Transforms/GlobalOpt/malloc-promote-5.ll (revision d586bd5ca231a6022f439d4c6e43cfeeb53eb1d6)
1213193c1SPhilip Reames; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2213193c1SPhilip Reames; RUN: opt -passes=globalopt -S < %s | FileCheck %s
3213193c1SPhilip Reames
4*d586bd5cSNikita Popov@g = internal global ptr null, align 8
5213193c1SPhilip Reames
6213193c1SPhilip Reamesdefine signext i32 @f() local_unnamed_addr {
7213193c1SPhilip Reames; CHECK-LABEL: @f(
8213193c1SPhilip Reames; CHECK-NEXT:  entry:
9*d586bd5cSNikita Popov; CHECK-NEXT:    store i16 -1, ptr @g.body, align 2
10213193c1SPhilip Reames; CHECK-NEXT:    ret i32 0
11213193c1SPhilip Reames;
12213193c1SPhilip Reamesentry:
13*d586bd5cSNikita Popov  %call = call ptr @malloc(i64 4)
14*d586bd5cSNikita Popov  store ptr %call, ptr @g, align 8
15*d586bd5cSNikita Popov  store i16 -1, ptr %call
16213193c1SPhilip Reames  ret i32 0
17213193c1SPhilip Reames}
18213193c1SPhilip Reames
19213193c1SPhilip Reamesdefine signext i32 @main() {
20213193c1SPhilip Reames; CHECK-LABEL: @main(
21213193c1SPhilip Reames; CHECK-NEXT:  entry:
22213193c1SPhilip Reames; CHECK-NEXT:    [[CALL:%.*]] = call signext i32 @f()
23213193c1SPhilip Reames; CHECK-NEXT:    call void @f1()
24*d586bd5cSNikita Popov; CHECK-NEXT:    store i32 1, ptr @g.body, align 4
25213193c1SPhilip Reames; CHECK-NEXT:    call void @f1()
26*d586bd5cSNikita Popov; CHECK-NEXT:    store i8 2, ptr @g.body, align 4
27213193c1SPhilip Reames; CHECK-NEXT:    call void @f1()
28*d586bd5cSNikita Popov; CHECK-NEXT:    [[RES:%.*]] = load i32, ptr @g.body, align 4
29213193c1SPhilip Reames; CHECK-NEXT:    ret i32 [[RES]]
30213193c1SPhilip Reames;
31213193c1SPhilip Reamesentry:
32213193c1SPhilip Reames  %call = call signext i32 @f()
33213193c1SPhilip Reames  call void @f1()
34*d586bd5cSNikita Popov  %v0 = load ptr, ptr @g, align 8
35*d586bd5cSNikita Popov  store i32 1, ptr %v0, align 4
36213193c1SPhilip Reames  call void @f1()
37*d586bd5cSNikita Popov  %v1 = load ptr, ptr @g, align 8
38*d586bd5cSNikita Popov  store i8 2, ptr %v1, align 4
39213193c1SPhilip Reames  call void @f1()
40*d586bd5cSNikita Popov  %v2 = load ptr, ptr @g, align 8
41*d586bd5cSNikita Popov  %res = load i32, ptr %v2, align 4
42213193c1SPhilip Reames  ret i32 %res
43213193c1SPhilip Reames}
44213193c1SPhilip Reames
45*d586bd5cSNikita Popovdeclare noalias align 16 ptr @malloc(i64) allockind("alloc,uninitialized") allocsize(0)
46213193c1SPhilip Reamesdeclare void @f1()
47