Skip to content

Commit 8be4c2a

Browse files
committed
Add changes from dlang/dmd#3685
1 parent 806babe commit 8be4c2a

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

dmd2/optimize.c

+12-2
Original file line numberDiff line numberDiff line change
@@ -336,11 +336,21 @@ Expression *AddrExp::optimize(int result, bool keepLvalue)
336336
ex = ((PtrExp *)e1)->e1;
337337
if (type->equals(ex->type))
338338
e = ex;
339+
#if IN_LLVM // Backport of D-Programming-Language/dmd#3685
340+
else if (type->toBasetype()->immutableOf()->equals(ex->type->toBasetype()->immutableOf()))
341+
{
342+
e = ex->copy();
343+
e->type = type;
344+
}
345+
else
346+
return this;
347+
#else
339348
else
340349
{
341350
e = ex->copy();
342351
e->type = type;
343352
}
353+
#endif
344354
return e;
345355
}
346356
if (e1->op == TOKvar)
@@ -392,8 +402,8 @@ Expression *PtrExp::optimize(int result, bool keepLvalue)
392402
ex = ((AddrExp *)e1)->e1;
393403
if (type->equals(ex->type))
394404
e = ex;
395-
#if IN_LLVM // Backport of D-Programming-Language/dmd#3662.
396-
else if (ex->type->implicitConvTo(type) >= MATCHconst)
405+
#if IN_LLVM // Backport of D-Programming-Language/dmd#3685
406+
else if (type->toBasetype()->immutableOf()->equals(ex->type->toBasetype()->immutableOf()))
397407
{
398408
e = ex->copy();
399409
e->type = type;

0 commit comments

Comments
 (0)