| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --version 6 |
| ; RUN: opt < %s -passes=instcombine -S | FileCheck %s |
| |
| @str = constant [5 x i8] c"foo\0A\00" |
| @fmt = constant [3 x i8] c"%s\00" |
| |
| ; Make puts un-emittable by redefining it as a global variable. |
| @puts = global i32 0 |
| |
| |
| ;. |
| ; CHECK: @str = constant [5 x i8] c"foo\0A\00" |
| ; CHECK: @fmt = constant [3 x i8] c"%s\00" |
| ; CHECK: @puts = global i32 0 |
| ;. |
| define i32 @test() { |
| ; CHECK-LABEL: define i32 @test() { |
| ; CHECK-NEXT: [[CALL:%.*]] = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @str) |
| ; CHECK-NEXT: ret i32 0 |
| ; |
| %call = call i32 (ptr, ...) @printf(ptr @str) |
| ret i32 0 |
| } |
| |
| define i32 @test2() { |
| ; CHECK-LABEL: define i32 @test2() { |
| ; CHECK-NEXT: [[CALL:%.*]] = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @fmt, ptr nonnull @str) |
| ; CHECK-NEXT: ret i32 0 |
| ; |
| %call = call i32 (ptr, ...) @printf(ptr @fmt, ptr @str) |
| ret i32 0 |
| } |
| |
| declare i32 @printf(ptr, ...) |