On Fri, Sep 19, 2014 at 1:43 PM, Jeff Law <l...@redhat.com> wrote: > On 09/15/14 08:33, Jiong Wang wrote: >> >> >> Jeff, >> >> thanks, I partially understand your meaning here. >> >> take the function "ira_implicitly_set_insn_hard_regs" in ira-lives.c >> for example, >> >> when generating address rtl, gcc will automatically generate "const" >> operator to prefix >> the address expression, like the following. so a simple CONSTANT_P >> check is enough in >> case there is no embedded register. >> >> (insn 309 310 308 3 (set (reg:DI 44 r15 [orig:94 ivtmp.674 ] [94]) >> (const:DI (plus:DI (symbol_ref:DI ("recog_data") [flags 0x40] >> <var_decl 0x2b2c2ff91510 recog_data>) >> (const_int 480 [0x1e0])))) -1 >> >> >> but for architecture like aarch64, the following instruction >> sequences to forming address >> may be generated >> >> (insn 73 14 74 4 (set (reg/f:DI 20 x20 [99]) >> (high:DI (symbol_ref:DI ("global_a") [flags 0xc0] <var_decl >> 0x7ff755a60900 stats>))) 35 {*movdi_aarch64} >> (expr_list:REG_EQUIV (high:DI (symbol_ref:DI ("global_a") [flags >> 0xc0] <var_decl 0x7ff755a60900 stats>)) >> (nil))) >> >> (insn 17 30 25 5 (set (reg/f:DI 4 x4 [83]) >> (lo_sum:DI (reg/f:DI 20 x20 [99]) >> (symbol_ref:DI ("global_a") [flags 0xc0] <var_decl >> 0x7ff755a60900 stats>))) {add_losym_di} >> (expr_list:REG_EQUIV (symbol_ref:DI ("global_a") [flags 0xc0] >> <var_decl 0x7ff755a60900 stats>) >> (nil))) >> >> while CONSTANT_P could not catch the latter lo_sum case, as the >> RTX_CLASS of lo_sum is RTX_OBJ not RTX_CONST_OBJ, > > Hmm, it's been ~15 years since I regularly worked on a target that uses > HIGH/LO_SUM, I thought we wrapped the LO_SUM expression inside a CONST as > well, but reading the docs for CONST, that clearly isn't the case.
Could we add a check for lo_sum since it is an RTX_OBJ rather than RTX_COMM_ARITH or RTX_BIN_ARITH? I am testing the patch for that to fix the above issue. It shows up with the testcase Jiong added but only with -mabi=ilp32 enabled. Thanks, Andrew Pinski > > Sorry for that. Can you (re) send your current patch for this for review? > > Jeff