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