brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 3907532 Raw
45 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; Test that the fputs library call simplifier works correctly.3;4; RUN: opt < %s -passes=instcombine -S | FileCheck %s5 6target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"7 8%FILE = type { }9 10@empty = constant [1 x i8] zeroinitializer11@A = constant [2 x i8] c"A\00"12@hello = constant [7 x i8] c"hello\0A\00"13 14declare i32 @fputs(ptr, ptr)15 16; Check fputs(str, fp) --> fwrite(str, strlen(s), 1, fp).17 18define void @test_simplify1(ptr %fp) {19; CHECK-LABEL: @test_simplify1(20; CHECK-NEXT:    ret void21;22  call i32 @fputs(ptr @empty, ptr %fp)23  ret void24}25 26; NOTE: The fwrite simplifier simplifies this further to fputc.27 28define void @test_simplify2(ptr %fp) {29; CHECK-LABEL: @test_simplify2(30; CHECK-NEXT:    [[FPUTC:%.*]] = call i32 @fputc(i32 65, ptr [[FP:%.*]])31; CHECK-NEXT:    ret void32;33  call i32 @fputs(ptr @A, ptr %fp)34  ret void35}36 37define void @test_simplify3(ptr %fp) {38; CHECK-LABEL: @test_simplify3(39; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @fwrite(ptr nonnull @hello, i32 6, i32 1, ptr [[FP:%.*]])40; CHECK-NEXT:    ret void41;42  call i32 @fputs(ptr @hello, ptr %fp)43  ret void44}45