http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54971



--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-10-22 
16:19:18 UTC ---

Created attachment 28510

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28510

gcc48-pr54971-incremental.patch



Incremental patch that makes the pr46571.c testcase pass.

The primary problem was passing non-NULL prefix to create_tmp_var* for

something

that is called solely if MAY_HAVE_DEBUG_STMTS, because create_tmp_var_name

uses a global counter for all temp variables, thus if it is incremented with -g

and not with -g0, it resulted e.g. in ivopts creating different var names,

which, unlike DECL_UIDs, should be the same.



I guess the SR.<NUM> names are still useful for debugging of SRA and later

passes (in the unlikely case where a fancy name isn't assigned, if there is

fancy name, there is no point in creating a SR.* name), but if we do that, it

is better to create it only for replacements used in non-debug code (which is

why I've moved the assignment of DECL_NAME if it doesn't have fancy name).

And I've moved also the dump_file printout, because otherwise it would be

confusing if we printed we've created a D.12345 replacement and subsequently

immediately used SR.123 for it's name instead.



I think we shouldn't be using create_tmp_var at all for the debug only

replacements, as it calls gimple_add_tmp_var and preferrably the local decls

should be the same between -g and -g0 too.

Reply via email to