Skip to content

Commit fa7b807

Browse files
committed
Fix CTFE failures during inlining
1 parent 414e335 commit fa7b807

1 file changed

Lines changed: 14 additions & 24 deletions

File tree

compiler/src/dmd/inline.d

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,7 @@ public:
763763
vto.parent = ids.parent;
764764
vto.csym = null;
765765
vto.nrvo = ids.propagateNRVO && varIsNRVO;
766+
vto.ctfeAdrOnStack = VarDeclaration.AdrOnStackNone;
766767

767768
ids.from.push(vd);
768769
ids.to.push(vto);
@@ -850,13 +851,8 @@ public:
850851
{
851852
auto ce = cast(CastExp)e.copy();
852853
if (auto lowering = ce.lowering)
853-
{
854854
ce.lowering = doInlineAs!Expression(lowering, ids);
855-
}
856-
else
857-
{
858-
ce.e1 = doInlineAs!Expression(e.e1, ids);
859-
}
855+
ce.e1 = doInlineAs!Expression(e.e1, ids);
860856

861857
result = ce;
862858
}
@@ -875,11 +871,8 @@ public:
875871

876872
if (auto lowering = ce.lowering)
877873
ce.lowering = doInlineAs!Expression(lowering, ids);
878-
else
879-
{
880-
ce.e1 = doInlineAs!Expression(e.e1, ids);
881-
ce.e2 = doInlineAs!Expression(e.e2, ids);
882-
}
874+
ce.e1 = doInlineAs!Expression(e.e1, ids);
875+
ce.e2 = doInlineAs!Expression(e.e2, ids);
883876

884877
result = ce;
885878
}
@@ -889,12 +882,9 @@ public:
889882
auto cae = cast(CatAssignExp) e.copy();
890883

891884
if (auto lowering = cae.lowering)
892-
cae.lowering = doInlineAs!Expression(cae.lowering, ids);
893-
else
894-
{
895-
cae.e1 = doInlineAs!Expression(e.e1, ids);
896-
cae.e2 = doInlineAs!Expression(e.e2, ids);
897-
}
885+
cae.lowering = doInlineAs!Expression(lowering, ids);
886+
cae.e1 = doInlineAs!Expression(e.e1, ids);
887+
cae.e2 = doInlineAs!Expression(e.e2, ids);
898888

899889
result = cae;
900890
}
@@ -922,14 +912,12 @@ public:
922912

923913
override void visit(ConstructExp e)
924914
{
925-
if (e.lowering)
926-
{
927-
auto ce = cast(ConstructExp)e.copy();
915+
auto ce = cast(ConstructExp)e.copy();
916+
if (ce.lowering)
928917
ce.lowering = doInlineAs!Expression(ce.lowering, ids);
929-
result = ce;
930-
}
931-
else
932-
visit(cast(AssignExp) e);
918+
ce.e1 = doInlineAs!Expression(e.e1, ids);
919+
ce.e2 = doInlineAs!Expression(e.e2, ids);
920+
result = ce;
933921
}
934922

935923
override void visit(LoweredAssignExp e)
@@ -977,6 +965,7 @@ public:
977965
memcpy(cast(void*)vto, cast(void*)vd, __traits(classInstanceSize, VarDeclaration));
978966
vto.parent = ids.parent;
979967
vto.csym = null;
968+
vto.ctfeAdrOnStack = VarDeclaration.AdrOnStackNone;
980969

981970
ids.from.push(vd);
982971
ids.to.push(vto);
@@ -1005,6 +994,7 @@ public:
1005994
memcpy(cast(void*)vto, cast(void*)vd, __traits(classInstanceSize, VarDeclaration));
1006995
vto.parent = ids.parent;
1007996
vto.csym = null;
997+
vto.ctfeAdrOnStack = VarDeclaration.AdrOnStackNone;
1008998

1009999
ids.from.push(vd);
10101000
ids.to.push(vto);

0 commit comments

Comments
 (0)