https://bugs.kde.org/show_bug.cgi?id=369175
--- Comment #5 from Julian Seward <jsew...@acm.org> --- Still can't repro it, but with a test case for this insn, the two calls look like this: IR and virtual-registerised code: -- t127 = 1Sto32(32to1(64to32(And64(is_BCDstring128_helper{0x38174610}(0x1:I64,t117,t118):I64,is_BCDstring128_helper{0x38174610}(0x1:I64,t120,t121):I64)))) li_word %vR721,0x0000000000000001 mr %r3,%vR721 mr %r4,%vR117 mr %r5,%vR118 call: { li_word %r10,0x0000000038174610 ; mtctr r10 ; bctrl [r3,r4,r5,RLPri_Int] } mr %vR722,%r3 li_word %vR723,0x0000000000000001 mr %r3,%vR723 mr %r4,%vR120 mr %r5,%vR121 call: { li_word %r10,0x0000000038174610 ; mtctr r10 ; bctrl [r3,r4,r5,RLPri_Int] } mr %vR724,%r3 and %vR720,%vR722,%vR724 andi. %vR725,%vR720,1 cmplwi %cr7,%vR725,1 set (cr7.eq=1),%vR719: { mfcr r0 ; rlwinm %vR719,r0,31,31,31 } slwi %vR719,%vR719,31 srawi %vR719,%vR719,31 mr %vR127,%vR719 Register allocation around the two calls: 194 li_word %r14,0x0000000000000001 195 mr %r3,%r14 196 mr %r4,%r15 197 mr %r5,%r16 198 call: { li_word %r10,0x0000000038174610 ; mtctr r10 ; bctrl [r3,r4,r5,RLPri_Int] } 199 mr %r14,%r3 200 li_word %r19,0x0000000000000001 201 mr %r3,%r19 202 mr %r4,%r17 203 mr %r5,%r18 204 call: { li_word %r10,0x0000000038174610 ; mtctr r10 ; bctrl [r3,r4,r5,RLPri_Int] } 205 mr %r19,%r3 206 and %r20,%r14,%r19 207 andi. %r14,%r20,1 So the result of the first call is parked in r14, and then we make the second call. That seems OK because r14 (in fact, r14 to r28) are callee saved so the result of the first call won't get trashed. Also, the args for the second call enter this fragment in r19/r18/r17, so we can be fairly sure the first call doesn't trash them. So there's nothing *obviously* wrong here that I can see. We need the real crash block. -- You are receiving this mail because: You are watching all bug changes.