[Bug c/43973] alpha libiberty/regex.c fails to compile with -O2 without -mbwx (internal compiler error)

2010-05-03 Thread ubizjak at gmail dot com


--- Comment #3 from ubizjak at gmail dot com  2010-05-03 16:12 ---
Can you try this patch:

--cut here--
Index: alpha.c
===
--- alpha.c (revision 158970)
+++ alpha.c (working copy)
@@ -842,7 +842,8 @@ alpha_legitimate_address_p (enum machine
 #endif

   /* Register plus a small constant offset is valid.  */
-  if (GET_CODE (x) == PLUS)
+  if (mode == DImode
+  && GET_CODE (x) == PLUS)
 {
   rtx ofs = XEXP (x, 1);
   x = XEXP (x, 0);
--cut here--

The core of the problem is 32bit POINTER_MODE, defined in vms.h and the fact,
that nothing prevents non-DImode address_operands from entering various
expanders. These expanders wrongly assume that decorating match_operand with DI
will magically fix wrong mode.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43973



[Bug c/43973] alpha libiberty/regex.c fails to compile with -O2 without -mbwx (internal compiler error)

2010-05-03 Thread ubizjak at gmail dot com


--- Comment #2 from ubizjak at gmail dot com  2010-05-03 13:46 ---
Hm, in expand_assignment (), around line 4408 in expr.c, we expand

MEM[base: pfrom_8, offset: 1]

to

(mem:QI (plus:DI (subreg/s:SI (reg/v/f:DI 108 [ pfrom ]) 0)
(const_int 1 [0x1])) [0 *pfrom_8 S1 A8])

IMO, the usage of subregs is kind of suspicious since this is invalid RTX.


-- 

ubizjak at gmail dot com changed:

   What|Removed |Added

 CC||ubizjak at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43973



[Bug c/43973] alpha libiberty/regex.c fails to compile with -O2 without -mbwx (internal compiler error)

2010-05-03 Thread ubizjak at gmail dot com


--- Comment #1 from ubizjak at gmail dot com  2010-05-03 12:09 ---
Confirmed with a cross from x86_64-pc-linux-gnu to alpha-dec-vms.


-- 

ubizjak at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2010-05-03 12:09:50
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43973