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:
parent
fa2faaa807
commit
966a140df6
4 changed files with 54 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
36
gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
Normal file
36
gcc/testsuite/gcc.c-torture/compile/regs-arg-size.c
Normal 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;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue