]> git.ipfire.org Git - thirdparty/gcc.git/commit
d: Fix PR 108842: Cannot use enum array with -fno-druntime
authorIain Buclaw <ibuclaw@gdcproject.org>
Fri, 7 Jul 2023 19:06:07 +0000 (21:06 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Fri, 7 Jul 2023 19:19:14 +0000 (21:19 +0200)
commitf934c5753849f7c48c6a3abfcd73b8f6008e8371
tree0eec803efd5cca9f8a8646c933468802f75aeed3
parentbb3b9c1c3ba8228387ea8a94f3638190d1696324
d: Fix PR 108842: Cannot use enum array with -fno-druntime

Restrict the generating of CONST_DECLs for D manifest constants to just
scalars without pointers.  It shouldn't happen that a reference to a
manifest constant has not been expanded within a function body during
codegen, but it has been found to occur in older versions of the D
front-end (PR98277), so if the decl of a non-scalar constant is
requested, just return its initializer as an expression.

PR d/108842

gcc/d/ChangeLog:

* decl.cc (DeclVisitor::visit (VarDeclaration *)): Only emit scalar
manifest constants.
(get_symbol_decl): Don't generate CONST_DECL for non-scalar manifest
constants.
* imports.cc (ImportVisitor::visit (VarDeclaration *)): New method.

gcc/testsuite/ChangeLog:

* gdc.dg/pr98277.d: Add more tests.
* gdc.dg/pr108842.d: New test.
gcc/d/decl.cc
gcc/d/imports.cc
gcc/testsuite/gdc.dg/pr108842.d [new file with mode: 0644]
gcc/testsuite/gdc.dg/pr98277.d