On Mon, Nov 14, 2016 at 05:56:49AM +0100, Michael Matz wrote:
> With this patch there are now no regressions on x86-64-linux (bootstrapped
> with all languages+ada). Okay for trunk?
I build cross-compilers for this for a whole bunch of archs, and built
Linux with that, to see what effect this has. This is the code size
generated before and after the patch; "0" means something failed to
build (either the compiler, for the mips targets and tilegx after the
patch, or Linux):
before after
alpha 5410232 5410264
arc 3624274 3624338
arm 0 0
arm64 9086689 9082593
blackfin 1963170 1963226
c6x 2086879 2086911
cris 2186162 2186130
frv 3623264 3623264
h8300 1052810 1052850
i386 9723021 9721407
ia64 15243432 15244136
m32r 3415580 3415580
m68k 3221030 3221070
microblaze 0 0
mips 0 0
mips64 0 0
mn10300 2349253 2349237
nios2 3172110 3172182
parisc 8241147 8241147
parisc64 7197909 7196853
powerpc 8396871 8396863
powerpc64 14908442 14907866
s390 12579952 12579568
sh 2819700 2819716
shnommu 1360512 1360512
sparc 3734865 3734881
sparc64 5932081 5932249
tilegx 10839527 0
tilepro 10092546 10092610
x86_64 10349451 10349038
xtensa 1766572 1766572
So the patch helps nicely on many targets. I looked into the regressions;
they all seem to be just unlucky, noise, or bad rtx_cost. The tilegx build
fail is a target bug building _negvsi2.o -- the backend accepts shifts by
70 or 87 bits, but the assembler doesn't ;-)
> @@ -11994,6 +12006,29 @@ simplify_comparison (enum rtx_code code, rtx *pop0,
> rtx *pop1)
> if (subreg_lowpart_p (op0)
> && GET_MODE_PRECISION (GET_MODE (SUBREG_REG (op0))) < mode_width)
> ;
> + else if (subreg_lowpart_p (op0)
Many of these lines start with a space before the tab, please fix.
Okay for trunk with that fixed. Thank you!
Segher