[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#352529: [hppa] internal compiler error: in reload_cse_simplify_operands,



> >  While investigating gstreamer0.10-ffmpeg's build failure under hppa[1],
> >  I received the following error from gcc:
> > 
> >  gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../libavutil -DHAVE_AV_CONFIG_H=1 -Wall -Wno-switch -g -O2 -MT mpegaudiodec.lo -MD -MP -MF .deps/mpegaudiodec.Tpo -c mpegaudiodec.c  -fPIC -DPIC -o .libs/mpegaudiodec.o
> > mpegaudiodec.c: In function 'mp_decode_frame':
> > mpegaudiodec.c:2445: warning: pointer targets in passing argument 4 of 'ff_mpa_synth_filter' differ in signedness
> > mpegaudiodec.c: In function 'ff_mpa_synth_filter':
> > mpegaudiodec.c:920: error: insn does not satisfy its constraints:
> > (insn 4924 2540 2542 4 mpegaudiodec.c:888 (set (reg:HI 70 %fr23 [1852])
> >         (reg:HI 1 %r1)) 53 {*pa.md:2926} (nil)
> >     (nil))
> > mpegaudiodec.c:920: internal compiler error: in reload_cse_simplify_operands, at postreload.c:391

Would you please file a PR?

The program compiles with gcc-3.4, but fails with 4.0 and 4.1 (didn't
try head).  At first glance, this seems like a reload bug.

The current define for HARD_REGNO_MODE_OK should stop reload from
trying to put a HImode value into a floating-point register.  We don't
support HImode moves between general and floating-point registers as
they are more expensive than using a stack temporary.  Looking at the
greg RTL output, I see that reload is just using %fr23 as temporary
storage (i.e., the value is copied back to a general register a few
instructions later).

Dave
-- 
J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)



Reply to: