On Tue, Jan 8, 2013 at 6:42 PM, Richard Biener <richard.guent...@gmail.com> wrote: > On Tue, Jan 8, 2013 at 8:51 AM, Bin.Cheng <amker.ch...@gmail.com> wrote: >> Hi, >> For attached preprocessed file, dump file >> lib_a-s_frexp.E.021t.copyrename1 contains gimple sequences like: >> >> <bb 4>: >> x_41 = x_8(D); >> goto <bb 8>; >> >> <bb 5>: >> if (ix_15 <= 1048575) >> goto <bb 6>; >> else >> goto <bb 7>; >> >> <bb 6>: >> x_19 = x_8(D) * 1.8014398509481984e+16; >> gh_u.value = x_19; >> _21 = gh_u.parts.msw; >> hx_22 = (__int32_t) _21; >> gh_u ={v} {CLOBBER}; >> ix_24 = hx_22 & 2147483647; >> *eptr_16(D) = -54; >> >> <bb 7>: >> # x_1 = PHI <x_8(D)(5), x_19(6)> >> # hx_2 = PHI <hx_11(5), hx_22(6)> >> # ix_3 = PHI <ix_15(5), ix_24(6)> >> _26 = *eptr_16(D); >> _27 = ix_3 >> 20; >> _28 = _27 + -1022; >> _29 = _26 + _28; >> *eptr_16(D) = _29; >> hx.0_31 = (unsigned int) hx_2; >> _32 = hx.0_31 & 2148532223; >> _33 = _32 | 1071644672; >> hx_34 = (__int32_t) _33; >> sh_u.value = x_1; >> hx.1_36 = (unsigned int) hx_34; >> sh_u.parts.msw = hx.1_36; >> x_38 = sh_u.value; >> sh_u ={v} {CLOBBER}; >> x_40 = x_38; >> >> <bb 8>: >> # _4 = PHI <x_41(4), x_40(7)> >> return _4; >> >> I am not sure if phi node (_4, x_41, x_40) in basic block 8 should be >> rename/partitioned into one partition. >> Trunk does not do this rename/partition, which causing big regression >> in code size on Thumb1. >> >> BTW, the command line is: >> arm-none-eabi-gcc -mthumb -mcpu=cortex-m0 -Os/-O2 ... >> >> I noticed the behavior is intended by PR54200, but not sure how the >> issue should be handled. Any suggestions? > > Missed coalescing should be handled by adjusting the out-of-SSA coalescing > code, not by copyrename (which really should go - it should not be needed > with VTA and var-tracking around). > > Richard. > Thanks for answering, I will learn that part of code.
-- Best Regards.