This was fixed in upstream, and merged in
r15-6559-g332cf038fda109.
Backport the individual fix from the upstream merge for releases/gcc-14.
PR d/116373
gcc/d/ChangeLog:
* dmd/expressionsem.d (resolveLoc): Check for null pointer before
resolving bounds of slice.
gcc/testsuite/ChangeLog:
* gdc.dg/pr116373.d: New test.
(cherry picked from commit
c7dab40d7569c51ac4e62ceea05c7c049da426bb)
Expression visitSlice(SliceExp exp)
{
exp.e1 = exp.e1.resolveLoc(loc, sc);
- exp.lwr = exp.lwr.resolveLoc(loc, sc);
- exp.upr = exp.upr.resolveLoc(loc, sc);
+ if (exp.lwr)
+ exp.lwr = exp.lwr.resolveLoc(loc, sc);
+ if (exp.upr)
+ exp.upr = exp.upr.resolveLoc(loc, sc);
return exp;
}
--- /dev/null
+// { dg-do compile }
+int[] x;
+
+void foo (int[] y = x[]) {}
+
+void main () {
+ foo();
+}