cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when successfully back substituting a reg.

* cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
	successfully back substituting a reg.

	* gcc.c-torture/compile/reg-args-size.c: New test.

From-SVN: r257598
This commit is contained in:
Jeff Law 2018-02-12 11:32:18 -07:00 committed by Jeff Law
parent fa2faaa807
commit 966a140df6
4 changed files with 54 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2018-02-12 Jeff Law <law@redhat.com>
* cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
successfully back substituting a reg.
2018-02-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/84037

View file

@ -4256,6 +4256,15 @@ try_back_substitute_reg (rtx set, rtx_insn *insn)
&& (reg_mentioned_p (dest, XEXP (note, 0))
|| rtx_equal_p (src, XEXP (note, 0))))
remove_note (insn, note);
/* If INSN has a REG_ARGS_SIZE note, move it to PREV. */
note = find_reg_note (insn, REG_ARGS_SIZE, NULL_RTX);
if (note != 0)
{
remove_note (insn, note);
gcc_assert (!find_reg_note (prev, REG_ARGS_SIZE, NULL_RTX));
set_unique_reg_note (prev, REG_ARGS_SIZE, XEXP (note, 0));
}
}
}
}

View file

@ -1,3 +1,7 @@
2018-02-12 Jeff Law <law@redhat.com>
* gcc.c-torture/compile/reg-args-size.c: New test.
2018-02-12 Carl Love <cel@us.ibm.com>
* gcc.target/powerpc/builtins-4-runnable.c (main): Move int128 and

View file

@ -0,0 +1,36 @@
int foo;
typedef long unsigned int size_t;
typedef short unsigned int wchar_t;
struct tm
{
int tm_mday;
int tm_mon;
int tm_year;
};
size_t
__strftime (wchar_t * s, size_t maxsize, const wchar_t * format, const struct tm *tim_p)
{
size_t count = 0;
int len = 0;
size_t i, ctloclen;
unsigned long width;
{
if (foo)
{
{
wchar_t *fmt = L"%s%.*d";
len = swprintf (&s[count], maxsize, fmt, "-", width, 0);
}
if ((count) >= maxsize)
return 0;
}
else
{
len =
swprintf (&s[count], maxsize - count, L"%.2d/%.2d/%.2d", 42, 99, 0);
if ((count) >= maxsize)
return 0;
}
}
}