| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| ; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa=false -S | FileCheck %s |
| |
| declare i8* @_Znwj(i32) willreturn |
| declare void @foo() readnone willreturn |
| |
| define void @test1(i8** %ptr) { |
| ; CHECK-LABEL: @test1( |
| ; CHECK-NEXT: [[VAL:%.*]] = inttoptr i64 23452 to i8* |
| ; CHECK-NEXT: store i8* [[VAL]], i8** [[PTR:%.*]] |
| ; CHECK-NEXT: ret void |
| ; |
| %val = inttoptr i64 23452 to i8* |
| store i8* %val, i8** %ptr |
| %call = call i8* @_Znwj(i32 1) |
| store i8* %call, i8** %ptr |
| store i8* %val, i8** %ptr |
| ret void |
| } |
| |
| define void @test2(i8** %ptr, i8* %p1, i8* %p2) { |
| ; CHECK-LABEL: @test2( |
| ; CHECK-NEXT: [[VAL:%.*]] = inttoptr i64 23452 to i8* |
| ; CHECK-NEXT: store i8* [[VAL]], i8** [[PTR:%.*]] |
| ; CHECK-NEXT: call void @foo() |
| ; CHECK-NEXT: store i8* [[P1:%.*]], i8** [[PTR]] |
| ; CHECK-NEXT: call void @foo() |
| ; CHECK-NEXT: store i8* [[VAL]], i8** [[PTR]] |
| ; CHECK-NEXT: ret void |
| ; |
| %val = inttoptr i64 23452 to i8* |
| store i8* %val, i8** %ptr |
| call void @foo() |
| store i8* %p1, i8** %ptr |
| call void @foo() |
| store i8* %p2, i8** %ptr |
| %call = call i8* @_Znwj(i32 1) |
| store i8* %call, i8** %ptr |
| store i8* %val, i8** %ptr |
| ret void |
| } |