[Bug inline-asm/57299] Inline assembly memory dependencies produce spurious loads, register pressure, compilation failures

2013-05-15 Thread umbricola at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57299 --- Comment #8 from Chris Mihelich --- (In reply to Andrew Pinski from comment #7) > Actually it only needs 4 (and not 6) due to holding of the pointer of y and > x can happen with only 2 registers. That's not what GCC is doing, actually. When I

[Bug inline-asm/57299] Inline assembly memory dependencies produce spurious loads, register pressure, compilation failures

2013-05-15 Thread umbricola at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57299 --- Comment #6 from Chris Mihelich --- Ah, but "=m" and "m" operands shouldn't need any register at all: their purpose is just to declare that a specific piece of memory is written or read in the assembly code, a declaration that helps the optimiz

[Bug inline-asm/57299] Inline assembly memory dependencies produce spurious loads, register pressure, compilation failures

2013-05-15 Thread umbricola at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57299 --- Comment #4 from Chris Mihelich --- Yes indeed, x is loaded from the stack into edi, and y is loaded from the stack into esi, as the register variable declarations specified. That's two registers. Where are the other two?

[Bug inline-asm/57299] Inline assembly memory dependencies produce spurious loads, register pressure, compilation failures

2013-05-15 Thread umbricola at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57299 --- Comment #2 from Chris Mihelich --- The asm statement uses only two registers. Of the six inputs and outputs, only "r" (p) and "r" (q) are registers; the four "=m" and "m" entries only declare that memory is read or written in the assembly cod

[Bug inline-asm/57299] New: Inline assembly memory dependencies produce spurious loads, register pressure, compilation failures

2013-05-15 Thread umbricola at gmail dot com
Severity: normal Priority: P3 Component: inline-asm Assignee: unassigned at gcc dot gnu.org Reporter: umbricola at gmail dot com Consider this function with an inline assembly statement that takes two pointer inputs in named registers and declares