brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 1a1f661 Raw
60 lines · plain
1; RUN: llc -regalloc=fast -optimize-regalloc=0 -verify-machineinstrs < %s2target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"3target triple = "x86_64-apple-darwin"4 5; This test causes a virtual FP register to be redefined while it is live:6;%bb.5.bb10:7;    successors: %bb.58;    Predecessors according to CFG: %bb.4 %bb.59;	%reg1024 = MOV_Fp8080 %reg103410;	%reg1025 = MUL_Fp80m32 %reg1024, %rip, 1, %reg0, %const.0, %reg0; mem:LD4[ConstantPool]11;	%reg1034 = MOV_Fp8080 %reg102512;	FP_REG_KILL implicit-def %fp0, implicit-def %fp1, implicit-def %fp2, implicit-def %fp3, implicit-def %fp4, implicit-def %fp5, implicit-def %fp613;	JMP_4 <%bb.5>14;15; The X86FP pass needs good kill flags, like on %fp0 representing %reg1034:16;%bb.5.bb10:17;    successors: %bb.518;    Predecessors according to CFG: %bb.4 %bb.519;	%fp0 = LD_Fp80m %stack.3, 1, %reg0, 0, %reg0; mem:LD10[FixedStack3](align=4)20;	%fp1 = MOV_Fp8080 killed %fp021;	%fp2 = MUL_Fp80m32 %fp1, %rip, 1, %reg0, %const.0, %reg0; mem:LD4[ConstantPool]22;	%fp0 = MOV_Fp8080 %fp223;	ST_FpP80m %stack.3, 1, %reg0, 0, %reg0, killed %fp0; mem:ST10[FixedStack3](align=4)24;	ST_FpP80m %stack.4, 1, %reg0, 0, %reg0, killed %fp1; mem:ST10[FixedStack4](align=4)25;	ST_FpP80m %stack.5, 1, %reg0, 0, %reg0, killed %fp2; mem:ST10[FixedStack5](align=4)26;	FP_REG_KILL implicit-def %fp0, implicit-def %fp1, implicit-def %fp2, implicit-def %fp3, implicit-def %fp4, implicit-def %fp5, implicit-def %fp627;	JMP_4 <%bb.5>28 29define fastcc i32 @sqlite3AtoF(ptr %z, ptr nocapture %pResult) nounwind ssp {30entry:31  br i1 undef, label %bb2, label %bb1.i.i32 33bb1.i.i:                                          ; preds = %entry34  unreachable35 36bb2:                                              ; preds = %entry37  br i1 undef, label %isdigit339.exit11.preheader, label %bb1338 39isdigit339.exit11.preheader:                      ; preds = %bb240  br i1 undef, label %bb12, label %bb1041 42bb10:                                             ; preds = %bb10, %isdigit339.exit11.preheader43  %divisor.041 = phi x86_fp80 [ %0, %bb10 ], [ 0xK3FFF8000000000000000, %isdigit339.exit11.preheader ] ; <x86_fp80> [#uses=1]44  %0 = fmul x86_fp80 %divisor.041, 0xK4002A000000000000000 ; <x86_fp80> [#uses=2]45  br i1 false, label %bb12, label %bb1046 47bb12:                                             ; preds = %bb10, %isdigit339.exit11.preheader48  %divisor.0.lcssa = phi x86_fp80 [ 0xK3FFF8000000000000000, %isdigit339.exit11.preheader ], [ %0, %bb10 ] ; <x86_fp80> [#uses=0]49  br label %bb1350 51bb13:                                             ; preds = %bb12, %bb252  br i1 undef, label %bb34, label %bb3653 54bb34:                                             ; preds = %bb1355  br label %bb3656 57bb36:                                             ; preds = %bb34, %bb1358  ret i32 undef59}60