Tree sharing issues...
law@redhat.com
law@redhat.com
Wed Nov 19 22:50:00 GMT 2003
In message <20031119222038.GO11681@kam.mff.cuni.cz>, Jan Hubicka writes:
>> In message <20031119221355.GN11681@kam.mff.cuni.cz>, Jan Hubicka writes:
>> >> > On Wed, Nov 19, 2003 at 08:01:52PM +0100, Jan Hubicka wrote:
>> >> > > I am almost done with verify_stmts except for tree sharing, as I am
>> >> > > still not clear about the tree sharing rules. (Did I mentioned it
>in
>> >> > > original email?)
>> >> >
>> >> > Yes. I don't know anything about tree sharing rules. I expect we
>> >> > can't share much.
>> >>
>> >> I think we do pretty heavy shaing via CCP that does move around the
>> >> constant PLUS_EXPRs and friends. I am not even aware of way to copy
>> >> tree expressions.
>> >> I wrote the code for testing and will run it once my other bootstrap
>> >> finish and come back with results.
>> >OK, first possitive in bootstrap is not very far:
>> >stage1/xgcc -Bstage1/ -B/usr/local/i686-pc-linux-gnu/bin/ -c -g -O2
>> >-DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes
>> >-Wmissing-prototypes -pedantic -Wno-long-long -Wold-style-definition
>> >-Werror -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -I.
>> >-I../../gcc -I../../gcc/.
>> >-I../../gcc/../include ../../gcc/gengtype.c -o gengtype.o
>> >(const char *)"*x";
>> >
>> >../../gcc/gengtype.c: In function `write_local_func_for_structure':
>> >
>> >../../gcc/gengtype.c:2184: error: Wrong sharing of tree nodes
>> >../../gcc/gengtype.c:2184: internal compiler error: verify_stmts failed.
>> >
>> >
>> >A shared NOP. Is this valid? If not, how to duplicate the nodes in CCP?
>> Not enough context to know if it's valid.
>You may see dump above:
>(const char *)"*x";
>It is constant.
>>
>> I would expect a NOP of a constant to be shared since that's still a
>> constant and we generally try to share constants.
>
>OK, I will extend my sharing test by is_gimple_min_invariant. Does that
>look right?
is_gimple_min_invariant (blah) && ! IS_EMPTY_STMT (blah) since I
believe the empty statement is (void) 0, but is not shared.
Ugh.
jeff
More information about the Gcc
mailing list