This gets re-added by the ExprVisitor when lowering StringExp back into a
STRING_CST during the code generator pass.
PR d/102185
gcc/d/ChangeLog:
* d-builtins.cc (d_eval_constant_expression): Don't include
terminating null pointer in string expression conversion.
gcc/testsuite/ChangeLog:
* gdc.dg/pr102185.d: New test.
(cherry picked from commit
53a4def0dc1aac39d592a0d20e9ec16e8b5574ac)
else if (code == STRING_CST)
{
const void *string = TREE_STRING_POINTER (cst);
- size_t len = TREE_STRING_LENGTH (cst);
+ size_t len = TREE_STRING_LENGTH (cst) - 1;
return StringExp::create (loc, CONST_CAST (void *, string), len);
}
else if (code == VECTOR_CST)
--- /dev/null
+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102185
+// { dg-do compile }
+
+static assert(__traits(getTargetInfo, "floatAbi").length == 0 ||
+ __traits(getTargetInfo, "floatAbi") == "hard" ||
+ __traits(getTargetInfo, "floatAbi") == "soft" ||
+ __traits(getTargetInfo, "floatAbi") == "softfp");