gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL terminated STRING_CST object.
2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de> * gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL terminated STRING_CST object. From-SVN: r262932
This commit is contained in:
parent
723f415edc
commit
a353fec45a
@ -1,3 +1,8 @@
|
||||
2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||
|
||||
* gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL
|
||||
terminated STRING_CST object.
|
||||
|
||||
2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||
|
||||
hsa-dump.c (dump_hsa_symbol): Avoid out of scope access to buf.
|
||||
|
@ -3433,23 +3433,13 @@ gimple_fold_builtin_printf (gimple_stmt_iterator *gsi, tree fmt,
|
||||
&& (int) len > 0)
|
||||
{
|
||||
char *newstr;
|
||||
tree offset_node, string_cst;
|
||||
|
||||
/* Create a NUL-terminated string that's one char shorter
|
||||
than the original, stripping off the trailing '\n'. */
|
||||
newarg = build_string_literal (len, str);
|
||||
string_cst = string_constant (newarg, &offset_node);
|
||||
gcc_checking_assert (string_cst
|
||||
&& (TREE_STRING_LENGTH (string_cst)
|
||||
== (int) len)
|
||||
&& integer_zerop (offset_node)
|
||||
&& (unsigned char)
|
||||
TREE_STRING_POINTER (string_cst)[len - 1]
|
||||
== target_newline);
|
||||
/* build_string_literal creates a new STRING_CST,
|
||||
modify it in place to avoid double copying. */
|
||||
newstr = CONST_CAST (char *, TREE_STRING_POINTER (string_cst));
|
||||
newstr = xstrdup (str);
|
||||
newstr[len - 1] = '\0';
|
||||
newarg = build_string_literal (len, newstr);
|
||||
free (newstr);
|
||||
if (fn_puts)
|
||||
{
|
||||
gcall *repl = gimple_build_call (fn_puts, 1, newarg);
|
||||
|
Loading…
Reference in New Issue
Block a user