Commit 6b68f00d by Richard Biener Committed by Richard Biener

re PR tree-optimization/91211 (wrong code with __builtin_memset() and…

re PR tree-optimization/91211 (wrong code with __builtin_memset() and __builtin_memcpy() at -O1 and above)

2019-07-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/91211
	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Fix
	memset encoding size.

	* gcc.dg/torture/pr91211.c: New testcase.

From-SVN: r273605
parent d826ea32
2019-07-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/91211
* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Fix
memset encoding size.
2019-07-19 Uroš Bizjak <ubizjak@gmail.com> 2019-07-19 Uroš Bizjak <ubizjak@gmail.com>
PR target/91204 PR target/91204
......
2019-07-19 Richard Biener <rguenther@suse.de> 2019-07-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/91211
* gcc.dg/torture/pr91211.c: New testcase.
2019-07-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/91200 PR tree-optimization/91200
* gcc.dg/torture/pr91200.c: New testcase. * gcc.dg/torture/pr91200.c: New testcase.
......
/* { dg-do run } */
typedef __UINT32_TYPE__ u32;
int
main (void)
{
u32 b = 0x027C5902;
u32 a = 0;
__builtin_memset (1 + (char *) &b, 0, 2);
__builtin_memcpy (&a, 2 + (char *) &b, 2);
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
if (a != 0x00000200)
#else
if (a != 0x00020000)
#endif
__builtin_abort();
return 0;
}
...@@ -1818,7 +1818,8 @@ vn_walk_cb_data::push_partial_def (const pd_data &pd, tree vuse, ...@@ -1818,7 +1818,8 @@ vn_walk_cb_data::push_partial_def (const pd_data &pd, tree vuse,
if (TREE_CODE (pd.rhs) == CONSTRUCTOR) if (TREE_CODE (pd.rhs) == CONSTRUCTOR)
/* Empty CONSTRUCTOR. */ /* Empty CONSTRUCTOR. */
memset (buffer + MAX (0, pd.offset), memset (buffer + MAX (0, pd.offset),
0, MIN ((HOST_WIDE_INT)sizeof (buffer), pd.size)); 0, MIN ((HOST_WIDE_INT)sizeof (buffer),
pd.size + MIN (0, pd.offset)));
else else
{ {
unsigned pad = 0; unsigned pad = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment