This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH, i386] Fix povray build with -O1 -mfpmath=sse -mno-80387


Hello!

Building povray with 'gcc -O1 -march=pentium4 -mfpmath=sse -mno-80387' with current mainline, I get following error:

atmosph.cpp: In function âRAINBOW* Create_Rainbow()â:
atmosph.cpp:1022: error: unrecognizable insn:
(insn 32 31 34 0 (set (mem/s/j:DF (plus:SI (reg/v/f:SI 58 [ New ])
               (const_int 32 [0x20])) [0 <variable>.Arc_Angle+0 S8 A64])
       (float_extend:DF (reg:SF 66))) -1 (insn_list:REG_DEP_TRUE 31 (nil))
   (expr_list:REG_DEAD (reg:SF 66)
       (nil)))
atmosph.cpp:1022: internal compiler error: in extract_insn, at recog.c:2020

Attached patch fixes this failure. Patch is bootstrapped on i686-pc-linux-gnu, regtesting on c,c++ is in progress.

2005-01-21 Uros Bizjak <uros@kss-loka.si>

   * config/i386/mmx.md (*extendsfdf2_sse): Use "nonimmediate_operand"
   operand constraint for operand 0.


However, resulting povray binary still crashes with:


Parsing..........File: ../scenes/advanced/abyss.pov  Line: 434
Warning: Degenerate CSG bounding box (not used!).
...File: ../scenes/advanced/abyss.pov  Line: 638
Warning: Degenerate CSG bounding box (not used!).

File: ../scenes/advanced/abyss.pov  Line: 677
       scale 0.5
}

#declare Deco[1]=cone{-y*0.5,0.2,y*4,0.1
#declare Deco[2] <----ERROR
Parse Error: Negative subscript

Uros.
Index: i386.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.608
diff -u -r1.608 i386.md
--- i386.md	20 Jan 2005 06:47:28 -0000	1.608
+++ i386.md	21 Jan 2005 12:18:07 -0000
@@ -3531,7 +3531,7 @@
    (set_attr "mode" "SF,XF,DF")])
 
 (define_insn "*extendsfdf2_sse"
-  [(set (match_operand:DF 0 "register_operand" "=Y")
+  [(set (match_operand:DF 0 "nonimmediate_operand" "=Y")
         (float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "mY")))]
   "TARGET_SSE2 && TARGET_SSE_MATH
    && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]