RFC: subreg fixing (extract_bit_field or simplify_subreg)
Aldy Hernandez
aldyh@redhat.com
Thu Oct 28 23:32:00 GMT 2004
Yay. More subreg stupidity.
On the following testcase, we call extract_bit_field trying to extract
a DF out of a memory block:
struct __attribute__ ((packed)) W { double l; } sW;
double dd;
testW () { dd = sW.l; }
We first call operand_subword with wordnum=1, and somewhere down the call
chain, simplify_gen_subreg calls simplify_subreg, which returns 0.
This causes simplify_gen_subreg to force creation of the subreg
with gen_rtx_SUBREG.
...this creates invalid rtl: (subreg:SI (reg:DF 118) 4).
What is advisable?
Would it be ok to modify simplify_gen_subreg to return NULL_RTX for
class incompatabilities, or is the problem further up? (Obviously,
I'd have to change operand_subword to operand_subword_force).
On a similar note, invalid rtl keeps biting my butt, and has for about
5 years. Would be ok to add checks in gen_rtx_SUBREG to abort on
invalid RTL (hard coding the common cases)...or am I back to putting
yellow stickies on my monitor with the stupid cases, and matching RTL
dumps with stickies for the rest of my life?
Aldy
More information about the Gcc
mailing list