[Bug target/41017] regparm=3 passes structures inconsistently

2009-08-17 Thread hjl dot tools at gmail dot com
--- Comment #10 from hjl dot tools at gmail dot com 2009-08-18 04:49 --- (In reply to comment #3) Btw, the documentation claims regparm only affects integral parameters. Agreed, -regparm=N should only apply to integer parameters. I will take a look when I find time. BTW,

[Bug target/41017] regparm=3 passes structures inconsistently

2009-08-11 Thread mikulas at artax dot karlin dot mff dot cuni dot cz
--- Comment #8 from mikulas at artax dot karlin dot mff dot cuni dot cz 2009-08-11 20:38 --- Created an attachment (id=18341) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18341action=view) A patch for -freg-struct-return Another patch that makes -freg-struct-return consistent.

[Bug target/41017] regparm=3 passes structures inconsistently

2009-08-11 Thread mikulas at artax dot karlin dot mff dot cuni dot cz
--- Comment #9 from mikulas at artax dot karlin dot mff dot cuni dot cz 2009-08-11 20:40 --- The Basic rule implemented in both patches is: when you have aggregate type, you MUST NOT look at mode to infer parameter or return method. It is unreliable. --

[Bug target/41017] regparm=3 passes structures inconsistently

2009-08-10 Thread ubizjak at gmail dot com
--- Comment #5 from ubizjak at gmail dot com 2009-08-10 08:05 --- (In reply to comment #4) If you want to change it to be consistent with the documentation (not with existing implementation) and pass structures always on stack, I wouldn't object against it. Just don't change it

[Bug target/41017] regparm=3 passes structures inconsistently

2009-08-10 Thread ubizjak at gmail dot com
--- Comment #6 from ubizjak at gmail dot com 2009-08-10 08:06 --- Adding H.J. to CC. -- ubizjak at gmail dot com changed: What|Removed |Added CC|

[Bug target/41017] regparm=3 passes structures inconsistently

2009-08-10 Thread mikulas at artax dot karlin dot mff dot cuni dot cz
--- Comment #7 from mikulas at artax dot karlin dot mff dot cuni dot cz 2009-08-10 19:36 --- Worse, try to return these structures with -freg-struct-return and it also follows this inconsistent pattern, some are returned in EAX:EDX, some are returned in ST(0). It is even inconsistent

[Bug target/41017] regparm=3 passes structures inconsistently

2009-08-09 Thread mikulas at artax dot karlin dot mff dot cuni dot cz
--- Comment #1 from mikulas at artax dot karlin dot mff dot cuni dot cz 2009-08-09 18:40 --- Created an attachment (id=18331) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18331action=view) a proposed patch. Fixed bug 41013 as well. Change it so that all the aggregate types take

[Bug target/41017] regparm=3 passes structures inconsistently

2009-08-09 Thread rguenth at gcc dot gnu dot org
--- Comment #2 from rguenth at gcc dot gnu dot org 2009-08-09 19:10 --- Can you check if regparm(3) behavior ever changed during the gcc releases? Hardly anyone deliberately designed it this way. Gcc internals are exposed to the ABI! well, regparm(n) is certainly out of the psABI

[Bug target/41017] regparm=3 passes structures inconsistently

2009-08-09 Thread rguenth at gcc dot gnu dot org
--- Comment #3 from rguenth at gcc dot gnu dot org 2009-08-09 19:13 --- Btw, the documentation claims regparm only affects integral parameters. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41017

[Bug target/41017] regparm=3 passes structures inconsistently

2009-08-09 Thread mikulas at artax dot karlin dot mff dot cuni dot cz
--- Comment #4 from mikulas at artax dot karlin dot mff dot cuni dot cz 2009-08-09 21:16 --- Regparm changed between gcc 3.x - 4.x (I remember it too painfully, I had to rewrite some assembler files). In 3.x, all arguments were incrementing register count, even if they were on stack,