diff options
author | Imre Kaloz <kaloz@openwrt.org> | 2012-04-09 17:00:03 +0000 |
---|---|---|
committer | Imre Kaloz <kaloz@openwrt.org> | 2012-04-09 17:00:03 +0000 |
commit | 240c8ea1fed51a17d3b14f6c139d3c9fb1fceb44 (patch) | |
tree | da95232174812432180204a57a2de1c3ab591df6 /toolchain/gcc/patches/4.4.7/931-avr32_disable_shifted_data_opt.patch | |
parent | 4a5dfbd949f4214bc978894e7cc5d1778407b7f3 (diff) | |
download | master-187ad058-240c8ea1fed51a17d3b14f6c139d3c9fb1fceb44.tar.gz master-187ad058-240c8ea1fed51a17d3b14f6c139d3c9fb1fceb44.tar.bz2 master-187ad058-240c8ea1fed51a17d3b14f6c139d3c9fb1fceb44.zip |
[toolchain/gcc/4.4]: upgrade to gcc 4.4.7
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31230 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain/gcc/patches/4.4.7/931-avr32_disable_shifted_data_opt.patch')
-rw-r--r-- | toolchain/gcc/patches/4.4.7/931-avr32_disable_shifted_data_opt.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/toolchain/gcc/patches/4.4.7/931-avr32_disable_shifted_data_opt.patch b/toolchain/gcc/patches/4.4.7/931-avr32_disable_shifted_data_opt.patch new file mode 100644 index 0000000000..2003e97ae0 --- /dev/null +++ b/toolchain/gcc/patches/4.4.7/931-avr32_disable_shifted_data_opt.patch @@ -0,0 +1,32 @@ +--- a/gcc/config/avr32/avr32.c ++++ b/gcc/config/avr32/avr32.c +@@ -6726,7 +6726,28 @@ avr32_reorg_optimization (void) + } + } + +- if (TARGET_MD_REORG_OPTIMIZATION && (optimize_size || (optimize > 0))) ++ /* Disabled this optimization since it has a bug */ ++ /* In the case where the data instruction the shifted insn gets folded ++ * into is a branch destination, this breaks, i.e. ++ * ++ * add r8, r10, r8 << 2 ++ * 1: ++ * ld.w r11, r8[0] ++ * ... ++ * mov r8, sp ++ * rjmp 1b ++ * ++ * gets folded to: ++ * ++ * 1: ++ * ld.w r11, r10[r8 << 2] ++ * ... ++ * mov r8, sp ++ * rjmp 1b ++ * ++ * which is clearly wrong.. ++ */ ++ if (0 && TARGET_MD_REORG_OPTIMIZATION && (optimize_size || (optimize > 0))) + { + + /* Scan through all insns looking for shifted add operations */ |