From 31f858bae10fb07bcc4a623595ebb2cbdc88c94b Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 31 Aug 2012 16:58:29 -0700 Subject: [PATCH] Win64 --- src/backend/cgelem.c | 8 ++++---- src/e2ir.c | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/backend/cgelem.c b/src/backend/cgelem.c index 90d557a2ad3e..a13a369b1e00 100644 --- a/src/backend/cgelem.c +++ b/src/backend/cgelem.c @@ -2670,14 +2670,14 @@ CEXTERN elem * elstruct(elem *e) goto L1; } } - if (config.exe == EX_WIN64) - goto Ldefault; - if (targ1 && !targ2) - goto L1; if (I64 && ty == TYstruct) { tym = TYucent; goto L1; } + if (config.exe == EX_WIN64) + goto Ldefault; + if (targ1 && !targ2) + goto L1; goto Ldefault; L1: diff --git a/src/e2ir.c b/src/e2ir.c index 5092a1dae530..754b81a05403 100644 --- a/src/e2ir.c +++ b/src/e2ir.c @@ -3923,6 +3923,8 @@ elem *CastExp::toElem(IRState *irs) if (fsize != tsize) { // Array element sizes do not match, so we must adjust the dimensions + if (config.exe == EX_WIN64) + e = addressElem(e, t, true); elem *ep = el_params(e, el_long(TYsize_t, fsize), el_long(TYsize_t, tsize), NULL); e = el_bin(OPcall, type->totym(), el_var(rtlsym[RTLSYM_ARRAYCAST]), ep); }