On 07/28/14 16:39, David Wohlferd wrote:

On 7/28/2014 12:42 PM, Jeff Law wrote:
On 07/27/14 01:26, David Wohlferd wrote:
I'm not sure which maintainer to cc for inline asm stuff?

I have a release on file with the FSF, but don't have SVN write access.

Problem:
extract_insn() in recog.c will ICE if (noperands > MAX_RECOG_OPERANDS).
Normally this isn't a problem since expand_asm_operands() in cfgexpand.c
catches and reports a proper error for this condition.  However,
expand_asm_operands() only checks (ninputs + noutputs) instead of
(ninputs + noutputs + nlabels), so you can get the ICE when using "asm
goto."  See the bugzilla entry for sample code.

ChangeLog:
2014-07-27  David Wohlferd  <d...@limegreensocks.com>

         PR target/61692
         * cfgexpand.c (expand_asm_operands): Count all inline asm
parameters.
You should also include 'nclobbers'.

Reading thru asm_noperands (which is what extract_insn uses to count
operands), I would have thought you were right.  But while making this
fail with nLabels was easy, I wasn't able to get this to ICE at all
using clobbers (30 labels + 11 clobbers still didn't ICE).

And I'm reluctant to propose that change unless I can see it fail.
I understand, but I'm still quite confident it's the right thing to do. Running that 30 label + 11 clobber testcase under valgrind might show the problem, if you can stand waiting that long...


Also, please include the testcase you had nlabels part.

Jeff

Reply via email to