brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · 3132b65 Raw
141 lines · plain
1; RUN: llc < %s -O32; PR46263; ModuleID = '<stdin>'4target 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:32:32"5target triple = "i386-pc-linux-gnu"6@g_3 = common global i8 0, align 1		; <ptr> [#uses=2]7 8define signext i8 @safe_mul_func_int16_t_s_s(i32 %_si1, i8 signext %_si2) nounwind readnone {9entry:10	%tobool = icmp eq i32 %_si1, 0		; <i1> [#uses=1]11	%cmp = icmp sgt i8 %_si2, 0		; <i1> [#uses=2]12	%or.cond = or i1 %cmp, %tobool		; <i1> [#uses=1]13	br i1 %or.cond, label %lor.rhs, label %land.lhs.true314 15land.lhs.true3:		; preds = %entry16	%conv5 = sext i8 %_si2 to i32		; <i32> [#uses=1]17	%cmp7 = icmp slt i32 %conv5, %_si1		; <i1> [#uses=1]18	br i1 %cmp7, label %cond.end, label %lor.rhs19 20lor.rhs:		; preds = %land.lhs.true3, %entry21	%cmp10.not = icmp slt i32 %_si1, 1		; <i1> [#uses=1]22	%or.cond23 = and i1 %cmp, %cmp10.not		; <i1> [#uses=1]23	br i1 %or.cond23, label %lor.end, label %cond.false24 25lor.end:		; preds = %lor.rhs26	%tobool19 = icmp ne i8 %_si2, 0		; <i1> [#uses=2]27	%lor.ext = zext i1 %tobool19 to i32		; <i32> [#uses=1]28	br i1 %tobool19, label %cond.end, label %cond.false29 30cond.false:		; preds = %lor.end, %lor.rhs31	%conv21 = sext i8 %_si2 to i32		; <i32> [#uses=1]32	br label %cond.end33 34cond.end:		; preds = %cond.false, %lor.end, %land.lhs.true335	%cond = phi i32 [ %conv21, %cond.false ], [ 1, %land.lhs.true3 ], [ %lor.ext, %lor.end ]		; <i32> [#uses=1]36	%conv22 = trunc i32 %cond to i8		; <i8> [#uses=1]37	ret i8 %conv2238}39 40define i32 @func_34(i8 signext %p_35) nounwind readonly {41entry:42	%tobool = icmp eq i8 %p_35, 0		; <i1> [#uses=1]43	br i1 %tobool, label %lor.lhs.false, label %if.then44 45lor.lhs.false:		; preds = %entry46	%tmp1 = load i8, ptr @g_3		; <i8> [#uses=1]47	%tobool3 = icmp eq i8 %tmp1, 0		; <i1> [#uses=1]48	br i1 %tobool3, label %return, label %if.then49 50if.then:		; preds = %lor.lhs.false, %entry51	%tmp4 = load i8, ptr @g_3		; <i8> [#uses=1]52	%conv5 = sext i8 %tmp4 to i32		; <i32> [#uses=1]53	ret i32 %conv554 55return:		; preds = %lor.lhs.false56	ret i32 057}58 59define void @foo(i32 %p_5) noreturn nounwind {60entry:61	%cmp = icmp sgt i32 %p_5, 0		; <i1> [#uses=2]62	%call = tail call i32 @safe() nounwind		; <i32> [#uses=1]63	%conv1 = trunc i32 %call to i8		; <i8> [#uses=3]64	%tobool.i = xor i1 %cmp, true		; <i1> [#uses=3]65	%cmp.i = icmp sgt i8 %conv1, 0		; <i1> [#uses=3]66	%or.cond.i = or i1 %cmp.i, %tobool.i		; <i1> [#uses=1]67	br i1 %or.cond.i, label %lor.rhs.i, label %land.lhs.true3.i68 69land.lhs.true3.i:		; preds = %entry70	%xor = zext i1 %cmp to i32		; <i32> [#uses=1]71	%conv5.i = sext i8 %conv1 to i32		; <i32> [#uses=1]72	%cmp7.i = icmp slt i32 %conv5.i, %xor		; <i1> [#uses=1]73	%cmp7.i.not = xor i1 %cmp7.i, true		; <i1> [#uses=1]74	%or.cond23.i = and i1 %cmp.i, %tobool.i		; <i1> [#uses=1]75	%or.cond = and i1 %cmp7.i.not, %or.cond23.i		; <i1> [#uses=1]76	br i1 %or.cond, label %lor.end.i, label %for.inc77 78lor.rhs.i:		; preds = %entry79	%or.cond23.i.old = and i1 %cmp.i, %tobool.i		; <i1> [#uses=1]80	br i1 %or.cond23.i.old, label %lor.end.i, label %for.inc81 82lor.end.i:		; preds = %lor.rhs.i, %land.lhs.true3.i83	%tobool19.i = icmp eq i8 %conv1, 0		; <i1> [#uses=0]84	br label %for.inc85 86for.inc:		; preds = %for.inc, %lor.end.i, %lor.rhs.i, %land.lhs.true3.i87	br label %for.inc88}89 90define i32 @func_35(i8 signext %p_35) nounwind readonly {91entry:92  %tobool = icmp eq i8 %p_35, 0                   ; <i1> [#uses=1]93  br i1 %tobool, label %lor.lhs.false, label %if.then94 95lor.lhs.false:                                    ; preds = %entry96  %tmp1 = load i8, ptr @g_3                           ; <i8> [#uses=1]97  %tobool3 = icmp eq i8 %tmp1, 0                  ; <i1> [#uses=1]98  br i1 %tobool3, label %return, label %if.then99 100if.then:                                          ; preds = %lor.lhs.false, %entry101  %tmp4 = load i8, ptr @g_3                           ; <i8> [#uses=1]102  %conv5 = sext i8 %tmp4 to i32                   ; <i32> [#uses=1]103  ret i32 %conv5104 105return:                                           ; preds = %lor.lhs.false106  ret i32 0107}108 109define void @bar(i32 %p_5) noreturn nounwind {110entry:111  %cmp = icmp sgt i32 %p_5, 0                     ; <i1> [#uses=2]112  %call = tail call i32 @safe() nounwind          ; <i32> [#uses=1]113  %conv1 = trunc i32 %call to i8                  ; <i8> [#uses=3]114  %tobool.i = xor i1 %cmp, true                   ; <i1> [#uses=3]115  %cmp.i = icmp sgt i8 %conv1, 0                  ; <i1> [#uses=3]116  %or.cond.i = or i1 %cmp.i, %tobool.i            ; <i1> [#uses=1]117  br i1 %or.cond.i, label %lor.rhs.i, label %land.lhs.true3.i118 119land.lhs.true3.i:                                 ; preds = %entry120  %xor = zext i1 %cmp to i32                      ; <i32> [#uses=1]121  %conv5.i = sext i8 %conv1 to i32                ; <i32> [#uses=1]122  %cmp7.i = icmp slt i32 %conv5.i, %xor           ; <i1> [#uses=1]123  %cmp7.i.not = xor i1 %cmp7.i, true              ; <i1> [#uses=1]124  %or.cond23.i = and i1 %cmp.i, %tobool.i         ; <i1> [#uses=1]125  %or.cond = and i1 %cmp7.i.not, %or.cond23.i     ; <i1> [#uses=1]126  br i1 %or.cond, label %lor.end.i, label %for.inc127 128lor.rhs.i:                                        ; preds = %entry129  %or.cond23.i.old = and i1 %cmp.i, %tobool.i     ; <i1> [#uses=1]130  br i1 %or.cond23.i.old, label %lor.end.i, label %for.inc131 132lor.end.i:                                        ; preds = %lor.rhs.i, %land.lhs.true3.i133  %tobool19.i = icmp eq i8 %conv1, 0              ; <i1> [#uses=0]134  br label %for.inc135 136for.inc:                                          ; preds = %for.inc, %lor.end.i, %lor.rhs.i, %land.lhs.true3.i137  br label %for.inc138}139 140declare i32 @safe()141