r244198 - in /trunk/gcc: ChangeLog common.opt d...

aoliva@gcc.gnu.org aoliva@gcc.gnu.org
Sat Jan 7 19:53:00 GMT 2017


Author: aoliva
Date: Sat Jan  7 19:53:13 2017
New Revision: 244198

URL: https://gcc.gnu.org/viewcvs?rev=244198&root=gcc&view=rev
Log:
[-fcompare-debug] var tracking options are not optimization options

If we include them in the ICF hash, they may cause congruence_groups to
be processed in a different order due to different hashes, which in turn
causes different funcdef_nos to be assigned to functions.  Since these
numbers are included in -fcompare-debug dumps, they cause failures.

Since these options are not optimization options, in that they do not
(or should not, save for bugs like this) affect the executable code
output by the compiler, they should not be marked as such.

This patch replaces the Optimization flag in the var-tracking options
with the newly-introduced PerFunction flag, so that it can still be
controlled on a per-function basis, but that disregards it in the hash
computation used by ICF.

This fixes -fcompare-debug failures in numerous LTO testcases.

for  gcc/ChangeLog

	* doc/options.texi (PerFunction): New.
	* opt-functions.awk (switch_flags): Map both Optimization and
	PerFunction to CL_OPTIMIZATION.
	* opth-gen.awk: Test for PerFunction flag along with
	Optimization.
	* optc-save-gen.awk: Likewise.  Introduce var_opt_hash and set
	it only when the latter is present.  Skip those that don't in
	the hash function generator.
	* common.opt (fvar-tracking): Mark as PerFunction instead of
	Optimization.
	(fvar-tracking-assignments): Likewise.
	(fvar-tracking-assignments-toggle): Likewise.
	(fvar-tracking-uninit): Likewise.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/common.opt
    trunk/gcc/doc/options.texi
    trunk/gcc/opt-functions.awk
    trunk/gcc/optc-save-gen.awk
    trunk/gcc/opth-gen.awk



More information about the Gcc-cvs mailing list