1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; Test that the fputs library call simplifier works correctly. 3; 4; RUN: opt < %s -passes=instcombine -S | FileCheck %s 5 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] zeroinitializer 11@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 void 21; 22 call i32 @fputs(ptr @empty, ptr %fp) 23 ret void 24} 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 void 32; 33 call i32 @fputs(ptr @A, ptr %fp) 34 ret void 35} 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 void 41; 42 call i32 @fputs(ptr @hello, ptr %fp) 43 ret void 44} 45