]> git.ipfire.org Git - thirdparty/gcc.git/commit
Fix ICE in set_cell_span, at text-art/table.cc:148 with D front-end and -fanalyzer
authorIain Buclaw <ibuclaw@gdcproject.org>
Sat, 14 Oct 2023 00:19:41 +0000 (02:19 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Sat, 14 Oct 2023 11:52:30 +0000 (13:52 +0200)
commit578afbc751d122b55196a23fe75a17e1b4e9bd0c
tree7a293d2850ec9a375c5e9d1a1011f34b2cfbed55
parent06d8aee3aaa7928321acc6f7752aa5dee9661bf3
Fix ICE in set_cell_span, at text-art/table.cc:148 with D front-end and -fanalyzer

The internal error in analyzer turned out to be caused by a subtly
invalid tree representation of STRING_CSTs in the D front-end, fixed by
including the terminating NULL as part of the TREE_STRING_POINTER.

When adding a first analyzer test for D, it flagged up another subtle
mismatch in one assignment in the module support routines as well, fixed
by generating the correct field type for the compiler-generated struct.

PR d/111537

gcc/d/ChangeLog:

* expr.cc (ExprVisitor::visit (StringExp *)): Include null terminator
in STRING_CST string.
* modules.cc (get_compiler_dso_type): Generate ModuleInfo** type for
the minfo fields.

gcc/testsuite/ChangeLog:

* gdc.dg/analyzer/analyzer.exp: New test.
* gdc.dg/analyzer/pr111537.d: New test.
gcc/d/expr.cc
gcc/d/modules.cc
gcc/testsuite/gdc.dg/analyzer/analyzer.exp [new file with mode: 0644]
gcc/testsuite/gdc.dg/analyzer/pr111537.d [new file with mode: 0644]