This is the mail archive of the gcc-bugs@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]

[Bug target/34930] [4.3 Regression] ICE in instantiate_virtual_regs_in_insn with vector splat load



------- Comment #3 from pinskia at gcc dot gnu dot org  2008-01-23 04:39 -------
Here is a reduced C testcase compile with -O2 -maltivec:
#define vector __attribute__((vector_size(16) ))

vector int f(int a, int b)
{
  int g[100000]={};
  g[a] = b;
  return (vector int){a,a,a,a} + (vector int){g[b], g[b], g[b], g[b]};
}

Note the reason for g is to make virtual-stack-vars large enough so we get:
(insn 22 21 23 t.c:7 (parallel [
            (set (reg:V4SI 132)
                (mem/c/i:V4SI (plus:DI (reg/f:DI 115 virtual-stack-vars)
                        (const_int 400000 [0x61a80])) [3 S16 A128]))
            (unspec [
                    (const_int 0 [0x0])
                ] 196)
        ]) -1 (nil))

And then when instantiate_virtual_regs_in_insn comes around, it does a separate
load for the mem.  I don't know if this is a bug in altivec.md for the unspec
being done incorrectly or a bug in  instantiate_virtual_regs_in_insn where it
tries to fix up the lve's memory location but it pulls the memory load out
instead of just the address.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
  GCC build triplet|powerpc-apple-darwin9       |
   GCC host triplet|powerpc-apple-darwin9       |
 GCC target triplet|powerpc-apple-darwin9       |powerpc*-*-*
   Last reconfirmed|0000-00-00 00:00:00         |2008-01-23 04:39:17
               date|                            |
            Summary|[4.3 Regression]            |[4.3 Regression] ICE in
                   |gfortran.dg/cray_pointers_2.|instantiate_virtual_regs_in_
                   |f90:3360: internal compiler |insn with vector splat load
                   |error: in                   |
                   |instantiate_virtual_regs_in_|
                   |insn, at function.c:1564    |


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


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