| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- ; RUN: opt -deadargelim -S < %s | FileCheck %s
- define void @test(i32) {
- ret void
- }
- define void @foo() {
- call void @test(i32 0)
- ret void
- ; CHECK-LABEL: @foo(
- ; CHECK: i32 undef
- }
- define void @f(i32 %X) {
- entry:
- tail call void @sideeffect() nounwind
- ret void
- }
- declare void @sideeffect()
- define void @g(i32 %n) {
- entry:
- %add = add nsw i32 %n, 1
- ; CHECK: tail call void @f(i32 undef)
- tail call void @f(i32 %add)
- ret void
- }
- define void @h() {
- entry:
- %i = alloca i32, align 4
- store volatile i32 10, i32* %i, align 4
- ; CHECK: %tmp = load volatile i32, i32* %i, align 4
- ; CHECK-NEXT: call void @f(i32 undef)
- %tmp = load volatile i32, i32* %i, align 4
- call void @f(i32 %tmp)
- ret void
- }
- ; Check that callers are not transformed for weak definitions.
- define weak i32 @weak_f(i32 %x) nounwind {
- entry:
- ret i32 0
- }
- define void @weak_f_caller() nounwind {
- entry:
- ; CHECK: call i32 @weak_f(i32 10)
- %call = tail call i32 @weak_f(i32 10)
- ret void
- }
|