|
From: <sv...@va...> - 2014-09-16 22:34:02
|
Author: florian
Date: Tue Sep 16 22:33:52 2014
New Revision: 2953
Log:
Couple of fixes:
- deepCopyIRConst failed to copy Ico_V256 constants
- deepCopyIRExpr did not copy Iex_Binder expressions
- handle_gets_Stmt should also handle an Ist_Put statement
Modified:
trunk/priv/ir_defs.c
trunk/priv/ir_opt.c
Modified: trunk/priv/ir_defs.c
==============================================================================
--- trunk/priv/ir_defs.c (original)
+++ trunk/priv/ir_defs.c Tue Sep 16 22:33:52 2014
@@ -2231,6 +2231,7 @@
case Ico_F64: return IRConst_F64(c->Ico.F64);
case Ico_F64i: return IRConst_F64i(c->Ico.F64i);
case Ico_V128: return IRConst_V128(c->Ico.V128);
+ case Ico_V256: return IRConst_V256(c->Ico.V256);
default: vpanic("deepCopyIRConst");
}
}
@@ -2303,6 +2304,9 @@
case Iex_BBPTR:
return IRExpr_BBPTR();
+ case Iex_Binder:
+ return IRExpr_Binder(e->Iex.Binder.binder);
+
default:
vpanic("deepCopyIRExpr");
}
Modified: trunk/priv/ir_opt.c
==============================================================================
--- trunk/priv/ir_opt.c (original)
+++ trunk/priv/ir_opt.c Tue Sep 16 22:33:52 2014
@@ -803,6 +803,10 @@
vassert(isIRAtom(st->Ist.Exit.guard));
break;
+ case Ist_Put:
+ vassert(isIRAtom(st->Ist.Put.data));
+ break;
+
case Ist_PutI:
vassert(isIRAtom(st->Ist.PutI.details->ix));
vassert(isIRAtom(st->Ist.PutI.details->data));
@@ -849,9 +853,10 @@
env->inuse[j] = False;
}
break;
- default:
+ case VexRegUpdAllregsAtEachInsn:
// VexRegUpdAllregsAtEachInsn cannot happen here.
- // Neither any rubbish other value.
+ // fall through
+ default:
vassert(0);
}
} /* if (memRW) */
|