Skip to content

Commit

Permalink
Merge pull request #5705 from WalterBright/fix11585
Browse files Browse the repository at this point in the history
fix Issue 11585 - ICE(cgcod.c) with SIMD and -O
  • Loading branch information
andralex committed Apr 29, 2016
2 parents 7355b52 + 2430ad6 commit 7c3ccd8
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/backend/cgcod.c
Expand Up @@ -2171,7 +2171,7 @@ bool cssave(elem *e,regm_t regm,unsigned opsflag)
return false;

//printf("cssave(e = %p, regm = %s, opsflag = x%x)\n", e, regm_str(regm), opsflag);
regm &= mBP | ALLREGS | mES; /* just to be sure */
regm &= mBP | ALLREGS | mES | XMMREGS; /* just to be sure */

#if 0
/* Do not register CSEs if they are register variables and */
Expand Down Expand Up @@ -2595,7 +2595,7 @@ code *codelem(elem *e,regm_t *pretregs,bool constflag)
if (e->Ecount) /* if common subexp */
{
/* if no return value */
if ((*pretregs & (mSTACK | mES | ALLREGS | mBP)) == 0)
if ((*pretregs & (mSTACK | mES | ALLREGS | mBP | XMMREGS)) == 0)
{ if (tysize(e->Ety) == 1)
*pretregs |= BYTEREGS;
else if (tybasic(e->Ety) == TYdouble || tybasic(e->Ety) == TYdouble_alias)
Expand Down
2 changes: 2 additions & 0 deletions src/backend/cod1.c
Expand Up @@ -572,6 +572,8 @@ code *loadea(elem *e,code *cs,unsigned op,unsigned reg,targ_size_t offset,
{
assert(!EOP(e)); /* can't handle this */
regm_t rm = regcon.cse.mval & ~regcon.cse.mops & ~regcon.mvar; // possible regs
if (op == 0xFF && reg == 6)
rm &= ~XMMREGS; // can't PUSH an XMM register
if (sz > REGSIZE) // value is in 2 or 4 registers
{
if (I16 && sz == 8) // value is in 4 registers
Expand Down
11 changes: 11 additions & 0 deletions test/runnable/testxmm.d
Expand Up @@ -1445,6 +1445,17 @@ void test15144()
}
}

/*****************************************/
// https://issues.dlang.org/show_bug.cgi?id=11585

ubyte16 test11585(ubyte16* d)
{
ubyte16 a;
if (d is null) return a;

return __simd(XMM.PCMPEQB, *d, *d);
}

/*****************************************/

int main()
Expand Down

0 comments on commit 7c3ccd8

Please sign in to comment.