toolchain/gcc (linaro): fix extension elimination optimization
This applies Richard Sandiford's patch for Linaro GCC as an alternative to disabling the Linaro-specific extension elimination optimization altogether. Original patch: https://bugs.launchpad.net/gcc-linaro/+bug/728315 Signed-off-by: Mark Mentovai <mark@moxienet.com> SVN-Revision: 25871
This commit is contained in:
		| @@ -1,11 +0,0 @@ | |||||||
| --- a/gcc/opts.c |  | ||||||
| +++ b/gcc/opts.c |  | ||||||
| @@ -906,7 +906,7 @@ decode_options (unsigned int argc, const |  | ||||||
|    flag_tree_if_to_switch_conversion = opt2; |  | ||||||
|    flag_ipa_cp = opt2; |  | ||||||
|    flag_ipa_sra = opt2; |  | ||||||
| -  flag_ee = opt2; |  | ||||||
| +  flag_ee = 0; |  | ||||||
|   |  | ||||||
|    /* Track fields in field-sensitive alias analysis.  */ |  | ||||||
|    set_param_value ("max-fields-for-field-sensitive", |  | ||||||
| @@ -0,0 +1,18 @@ | |||||||
|  | https://bugs.launchpad.net/gcc-linaro/+bug/728315 | ||||||
|  | https://lists.openwrt.org/pipermail/openwrt-devel/2011-March/009847.html | ||||||
|  |  | ||||||
|  | --- a/gcc/ee.c | ||||||
|  | +++ b/gcc/ee.c | ||||||
|  | @@ -209,7 +209,11 @@ | ||||||
|  |  | ||||||
|  |        *regno = REGNO (reg); | ||||||
|  |  | ||||||
|  | -      if (paradoxical_subreg_p (use)) | ||||||
|  | +      /* Non-paradoxical SUBREGs of promoted vars guarantee that the | ||||||
|  | +	 upper (elided) bits of the inner register have a particular value. | ||||||
|  | +	 For our purposes, such SUBREGs act as a full reference to the | ||||||
|  | +	 inner register.  */ | ||||||
|  | +      if (paradoxical_subreg_p (use) || SUBREG_PROMOTED_VAR_P (use)) | ||||||
|  |          *size = GET_MODE_BITSIZE (GET_MODE (reg)); | ||||||
|  |        else | ||||||
|  |          *size = subreg_lsb (use) + GET_MODE_BITSIZE (GET_MODE (use)); | ||||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau