If we can't change the argument to &"...", use the original arg instead of
the partially munged one.
PR c++/93331 - ICE with __builtin_strchr.
* constexpr.c (cxx_eval_builtin_function_call): Use the original
argument if we didn't manage to extract a STRING_CST.
2020-01-23 Jason Merrill <jason@redhat.com>
+ PR c++/93331 - ICE with __builtin_strchr.
+ * constexpr.c (cxx_eval_builtin_function_call): Use the original
+ argument if we didn't manage to extract a STRING_CST.
+
PR c++/93345 - ICE with defaulted dtor and template.
PR c++/33799
* decl.c (cxx_maybe_build_cleanup): Don't try to set
for (i = 0; i < nargs; ++i)
{
tree arg = CALL_EXPR_ARG (t, i);
+ tree oarg = arg;
/* To handle string built-ins we need to pass ADDR_EXPR<STRING_CST> since
expand_builtin doesn't know how to look in the values table. */
arg = braced_lists_to_strings (TREE_TYPE (arg), arg);
if (TREE_CODE (arg) == STRING_CST)
arg = build_address (arg);
+ else
+ arg = oarg;
}
args[i] = arg;