Re: New regression on ARM Linux

2015-04-02 Thread Alan Lawrence
Richard Biener wrote: > > On Tue, 31 Mar 2015, Alan Lawrence wrote: > > >> >> (1) If we wish to keep the AAPCS principle that varargs are passed just as >> >> named args, we should use TYPE_MAIN_VARIANT inside >> >> arm_needs_doubleword_alignment, which will then ignore overalignment on both >> >

Re: New regression on ARM Linux

2015-03-31 Thread Richard Biener
On Tue, 31 Mar 2015, Alan Lawrence wrote: > Jakub Jelinek wrote: > > On Tue, Mar 31, 2015 at 11:47:37AM +0100, Alan Lawrence wrote: > > > Richard Biener wrote: > > > > But I find it odd that on ARM passing *((aligned_int *)p) as > > > > vararg (only as varargs?) changes calling conventions indepen

Re: New regression on ARM Linux

2015-03-31 Thread Alan Lawrence
Jakub Jelinek wrote: On Tue, Mar 31, 2015 at 11:47:37AM +0100, Alan Lawrence wrote: Richard Biener wrote: But I find it odd that on ARM passing *((aligned_int *)p) as vararg (only as varargs?) changes calling conventions independent of the functions type signature. Does it? Do you have a testc

Re: New regression on ARM Linux

2015-03-31 Thread Richard Earnshaw
On 31/03/15 12:08, Richard Biener wrote: > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > >> On 31/03/15 11:45, Richard Biener wrote: >>> On Tue, 31 Mar 2015, Richard Earnshaw wrote: >>> On 31/03/15 11:36, Richard Biener wrote: > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > >> O

Re: New regression on ARM Linux

2015-03-31 Thread Alan Lawrence
Richard Earnshaw wrote: On 31/03/15 11:45, Richard Biener wrote: On Tue, 31 Mar 2015, Richard Earnshaw wrote: On 31/03/15 11:36, Richard Biener wrote: On Tue, 31 Mar 2015, Richard Earnshaw wrote: On 31/03/15 11:00, Richard Biener wrote: On Tue, 31 Mar 2015, Richard Earnshaw wrote: On 31/

Re: New regression on ARM Linux

2015-03-31 Thread Richard Biener
On Tue, 31 Mar 2015, Jakub Jelinek wrote: > On Tue, Mar 31, 2015 at 11:47:37AM +0100, Alan Lawrence wrote: > > Richard Biener wrote: > > > > > >But I find it odd that on ARM passing *((aligned_int *)p) as > > >vararg (only as varargs?) changes calling conventions independent > > >of the functions

Re: New regression on ARM Linux

2015-03-31 Thread Richard Biener
On Tue, 31 Mar 2015, Richard Earnshaw wrote: > On 31/03/15 11:45, Richard Biener wrote: > > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > > > >> On 31/03/15 11:36, Richard Biener wrote: > >>> On Tue, 31 Mar 2015, Richard Earnshaw wrote: > >>> > On 31/03/15 11:00, Richard Biener wrote: > >>>

Re: New regression on ARM Linux

2015-03-31 Thread Jakub Jelinek
On Tue, Mar 31, 2015 at 11:47:37AM +0100, Alan Lawrence wrote: > Richard Biener wrote: > > > >But I find it odd that on ARM passing *((aligned_int *)p) as > >vararg (only as varargs?) changes calling conventions independent > >of the functions type signature. > > Does it? Do you have a testcase, a

Re: New regression on ARM Linux

2015-03-31 Thread Richard Biener
On Tue, 31 Mar 2015, Alan Lawrence wrote: > Richard Biener wrote: > > > > But I find it odd that on ARM passing *((aligned_int *)p) as > > vararg (only as varargs?) changes calling conventions independent > > of the functions type signature. > > Does it? Do you have a testcase, and compilation f

Re: New regression on ARM Linux

2015-03-31 Thread Richard Earnshaw
On 31/03/15 11:44, Richard Biener wrote: > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > >> On 31/03/15 11:20, Richard Biener wrote: >>> On Tue, 31 Mar 2015, Richard Biener wrote: >>> On Tue, 31 Mar 2015, Richard Earnshaw wrote: > On 31/03/15 08:50, Richard Biener wrote: >> On M

Re: New regression on ARM Linux

2015-03-31 Thread Richard Earnshaw
On 31/03/15 11:45, Richard Biener wrote: > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > >> On 31/03/15 11:36, Richard Biener wrote: >>> On Tue, 31 Mar 2015, Richard Earnshaw wrote: >>> On 31/03/15 11:00, Richard Biener wrote: > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > >> O

Re: New regression on ARM Linux

2015-03-31 Thread Alan Lawrence
Richard Biener wrote: But I find it odd that on ARM passing *((aligned_int *)p) as vararg (only as varargs?) changes calling conventions independent of the functions type signature. Does it? Do you have a testcase, and compilation flags, that'll make this show up in an RTL dump? I've tried nu

Re: New regression on ARM Linux

2015-03-31 Thread Richard Biener
On Tue, 31 Mar 2015, Richard Earnshaw wrote: > On 31/03/15 11:36, Richard Biener wrote: > > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > > > >> On 31/03/15 11:00, Richard Biener wrote: > >>> On Tue, 31 Mar 2015, Richard Earnshaw wrote: > >>> > On 31/03/15 08:50, Richard Biener wrote: > >>>

Re: New regression on ARM Linux

2015-03-31 Thread Richard Biener
On Tue, 31 Mar 2015, Richard Earnshaw wrote: > On 31/03/15 11:20, Richard Biener wrote: > > On Tue, 31 Mar 2015, Richard Biener wrote: > > > >> On Tue, 31 Mar 2015, Richard Earnshaw wrote: > >> > >>> On 31/03/15 08:50, Richard Biener wrote: > On Mon, Mar 30, 2015 at 10:13 PM, Richard Biener

Re: New regression on ARM Linux

2015-03-31 Thread Richard Earnshaw
On 31/03/15 11:36, Richard Biener wrote: > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > >> On 31/03/15 11:00, Richard Biener wrote: >>> On Tue, 31 Mar 2015, Richard Earnshaw wrote: >>> On 31/03/15 08:50, Richard Biener wrote: > On Mon, Mar 30, 2015 at 10:13 PM, Richard Biener > wr

Re: New regression on ARM Linux

2015-03-31 Thread Richard Biener
On Tue, 31 Mar 2015, Richard Earnshaw wrote: > On 31/03/15 11:00, Richard Biener wrote: > > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > > > >> On 31/03/15 08:50, Richard Biener wrote: > >>> On Mon, Mar 30, 2015 at 10:13 PM, Richard Biener > >>> wrote: > On March 30, 2015 6:45:34 PM GMT+

Re: New regression on ARM Linux

2015-03-31 Thread Jakub Jelinek
On Tue, Mar 31, 2015 at 11:10:39AM +0100, Richard Earnshaw wrote: > >>> That is, > >>> > >>> typedef int myint __attribute__((aligned(8))); > >>> > >>> int main() > >>> { > >>> myint i = 1; > >>> int j = 2; > >>> __builtin_printf("%d %d\n", i, j); > >>> } > >>> > >>> or > >>> > >>> myint i; >

Re: New regression on ARM Linux

2015-03-31 Thread Richard Earnshaw
On 31/03/15 11:20, Richard Biener wrote: > On Tue, 31 Mar 2015, Richard Biener wrote: > >> On Tue, 31 Mar 2015, Richard Earnshaw wrote: >> >>> On 31/03/15 08:50, Richard Biener wrote: On Mon, Mar 30, 2015 at 10:13 PM, Richard Biener wrote: > On March 30, 2015 6:45:34 PM GMT+02:00, Alan L

Re: New regression on ARM Linux

2015-03-31 Thread Richard Biener
On Tue, 31 Mar 2015, Richard Biener wrote: > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > > > On 31/03/15 08:50, Richard Biener wrote: > > > On Mon, Mar 30, 2015 at 10:13 PM, Richard Biener > > > wrote: > > >> On March 30, 2015 6:45:34 PM GMT+02:00, Alan Lawrence > > >> wrote: > > >>> -O2 w

Re: New regression on ARM Linux

2015-03-31 Thread Richard Earnshaw
On 31/03/15 11:00, Richard Biener wrote: > On Tue, 31 Mar 2015, Richard Earnshaw wrote: > >> On 31/03/15 08:50, Richard Biener wrote: >>> On Mon, Mar 30, 2015 at 10:13 PM, Richard Biener wrote: On March 30, 2015 6:45:34 PM GMT+02:00, Alan Lawrence wrote: > -O2 was what I first use

Re: New regression on ARM Linux

2015-03-31 Thread Richard Biener
On Tue, 31 Mar 2015, Richard Earnshaw wrote: > On 31/03/15 08:50, Richard Biener wrote: > > On Mon, Mar 30, 2015 at 10:13 PM, Richard Biener wrote: > >> On March 30, 2015 6:45:34 PM GMT+02:00, Alan Lawrence > >> wrote: > >>> -O2 was what I first used; it also occurs at -O1. -fno-tree-sra fixes

Re: New regression on ARM Linux

2015-03-31 Thread Alan Lawrence
Richard Biener wrote: On Mon, Mar 30, 2015 at 10:13 PM, Richard Biener wrote: It doesn't make sense to use the alignment of passed values. That looks like bs. This means that Int I __aligned__(8); Is passed differently than int. Arm_function_arg needs to be fixed. That is, typedef int

Re: New regression on ARM Linux

2015-03-31 Thread Richard Earnshaw
On 31/03/15 08:50, Richard Biener wrote: > On Mon, Mar 30, 2015 at 10:13 PM, Richard Biener wrote: >> On March 30, 2015 6:45:34 PM GMT+02:00, Alan Lawrence >> wrote: >>> -O2 was what I first used; it also occurs at -O1. -fno-tree-sra fixes >>> it. >>> >>> The problem appears to be in laying out

Re: New regression on ARM Linux

2015-03-31 Thread Richard Biener
On Mon, Mar 30, 2015 at 10:13 PM, Richard Biener wrote: > On March 30, 2015 6:45:34 PM GMT+02:00, Alan Lawrence > wrote: >>-O2 was what I first used; it also occurs at -O1. -fno-tree-sra fixes >>it. >> >>The problem appears to be in laying out arguments, specifically >>varargs. From >>the "good"

Re: New regression on ARM Linux

2015-03-30 Thread Richard Biener
On March 30, 2015 6:45:34 PM GMT+02:00, Alan Lawrence wrote: >-O2 was what I first used; it also occurs at -O1. -fno-tree-sra fixes >it. > >The problem appears to be in laying out arguments, specifically >varargs. From >the "good" -fdump-rtl-expand: > >(insn 18 17 19 2 (set (mem:SI (reg/f:SI 107

Re: New regression on ARM Linux

2015-03-30 Thread Alan Lawrence
-O2 was what I first used; it also occurs at -O1. -fno-tree-sra fixes it. The problem appears to be in laying out arguments, specifically varargs. From the "good" -fdump-rtl-expand: (insn 18 17 19 2 (set (mem:SI (reg/f:SI 107 virtual-outgoing-args) [0 S4 A32]) (reg:SI 111 [ b1$16 ]))

Re: New regression on ARM Linux

2015-03-30 Thread Richard Biener
On Mon, 30 Mar 2015, Richard Biener wrote: > On Mon, 30 Mar 2015, Alan Lawrence wrote: > > > ...actually attach the testcase... > > What compile options? Just tried -O2. The GIMPLE IL assumes 64bit alignment of .LC0 but I can't see anything not guaranteeing that: .section.roda

Re: New regression on ARM Linux

2015-03-30 Thread Richard Biener
On Mon, 30 Mar 2015, Alan Lawrence wrote: > ...actually attach the testcase... What compile options? > Alan Lawrence wrote: > > We've been seeing a bunch of new failures in the *libffi* testsuite on ARM > > Linux (arm-none-linux-gnueabi, arm-none-linux-gnueabihf), following this > > one-liner fi

Re: New regression on ARM Linux

2015-03-30 Thread Alan Lawrence
...actually attach the testcase... Alan Lawrence wrote: We've been seeing a bunch of new failures in the *libffi* testsuite on ARM Linux (arm-none-linux-gnueabi, arm-none-linux-gnueabihf), following this one-liner fix. I've reduced the testcase down to the attached (including removing any depe