> Reload can temporarily produce a SUBREG of a MEM if, as the comment
> says, the insn has a SUBREG of a REG, and the REG is turned into a
> memory address.  But before approving this patch, can you say
> something about what calls reg_overlap_mentioned_for_reload_p in this
> case?  There are a number of places in reload which assume that a
> SUBREG is only of a REG.

Here is the traceback:

#0  fancy_abort (file=0xa7dd7f "../../gcc/gcc/rtlanal.c", line=3149, 
    function=0xa7f240 "subreg_regno_offset") at ../../gcc/gcc/diagnostic.c:602
#1  0x00000000007f1ae5 in subreg_regno_offset (xregno=2507505024, xmode=QImode, 
offset=0, 
    ymode=HImode) at ../../gcc/gcc/rtlanal.c:3149
#2  0x00000000007d6527 in reg_overlap_mentioned_for_reload_p (x=0x2a95757de0, 
in=0x2a95757be0)
    at ../../gcc/gcc/reload.c:6340
#3  0x00000000007e5d7f in merge_assigned_reloads (insn=0x2a9592e870)
    at ../../gcc/gcc/reload1.c:6171
#4  0x00000000007e11c7 in reload_as_needed (live_known=1) at 
../../gcc/gcc/reload1.c:3958
#5  0x00000000007da5ac in reload (first=0x2a957a5f80, global=1) at 
../../gcc/gcc/reload1.c:1074
#6  0x000000000098c482 in global_alloc (file=0x0) at ../../gcc/gcc/global.c:628
#7  0x00000000009917b9 in rest_of_handle_global_alloc () at 
../../gcc/gcc/global.c:2494
#8  0x0000000000882ecd in execute_one_pass (pass=0xc2b640) at 
../../gcc/gcc/passes.c:846
#9  0x0000000000882f8c in execute_pass_list (pass=0xc2b640) at 
../../gcc/gcc/passes.c:878
#10 0x0000000000882faa in execute_pass_list (pass=0xc29e80) at 
../../gcc/gcc/passes.c:879
#11 0x00000000004e4a05 in tree_rest_of_compilation (fndecl=0x2a95747500)
    at ../../gcc/gcc/tree-optimize.c:412
#12 0x0000000000424a7a in c_expand_body (fndecl=0x2a95747500) at 
../../gcc/gcc/c-decl.c:6640
#13 0x00000000008da985 in cgraph_expand_function (node=0x2a95936900)
    at ../../gcc/gcc/cgraphunit.c:1056
#14 0x00000000008dac0d in cgraph_expand_all_functions () at 
../../gcc/gcc/cgraphunit.c:1122
#15 0x00000000008db312 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1276
#16 0x0000000000427a93 in c_write_global_declarations () at 
../../gcc/gcc/c-decl.c:7746
#17 0x00000000008261fc in compile_file () at ../../gcc/gcc/toplev.c:1003
#18 0x0000000000827cc1 in do_compile () at ../../gcc/gcc/toplev.c:1948
#19 0x0000000000827d25 in toplev_main (argc=19, argv=0x7fbffff7a8) at 
../../gcc/gcc/toplev.c:1980
#20 0x00000000004adbfb in main (argc=19, argv=0x7fbffff7a8) at 
../../gcc/gcc/main.c:35

Reply via email to