Browse Source

Fixed C++/CLI generated stackalloc

fixed #592
partially fixes #569
pull/587/head
LordJZ 11 years ago
parent
commit
5f2097ade6
  1. 17
      ICSharpCode.Decompiler/ILAst/ILAstOptimizer.cs

17
ICSharpCode.Decompiler/ILAst/ILAstOptimizer.cs

@ -676,13 +676,16 @@ namespace ICSharpCode.Decompiler.ILAst
switch (expr.Code) { switch (expr.Code) {
case ILCode.Localloc: case ILCode.Localloc:
{ {
ILExpression arg0 = args[0]; PointerType type = expr.InferredType as PointerType;
ILExpression expr2 = expr; if (type != null) {
DivideOrMultiplyBySize(ref expr2, ref arg0, ((PointerType)expr.InferredType).ElementType, true); ILExpression arg0 = args[0];
// expr shouldn't change ILExpression expr2 = expr;
if (expr2 != expr) DivideOrMultiplyBySize(ref expr2, ref arg0, type.ElementType, true);
throw new InvalidOperationException(); // expr shouldn't change
args[0] = arg0; if (expr2 != expr)
throw new InvalidOperationException();
args[0] = arg0;
}
break; break;
} }
case ILCode.Add: case ILCode.Add:

Loading…
Cancel
Save