tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory accesses where the use is for the first operand of a...
2017-07-25 Andrew Pinski <apinski@cavium.com> * tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory accesses where the use is for the first operand of a BIT_INSERT. From-SVN: r250530
This commit is contained in:
parent
50ca694de2
commit
6d20bf1870
2 changed files with 30 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2017-07-25 Andrew Pinski <apinski@cavium.com>
|
||||
|
||||
* tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory
|
||||
accesses where the use is for the first operand of a BIT_INSERT.
|
||||
|
||||
2017-07-25 Jim Wilson <jim.wilson@linaro.org>
|
||||
|
||||
PR bootstrap/81521
|
||||
|
|
|
@ -273,6 +273,11 @@ warn_uninitialized_vars (bool warn_possibly_uninitialized)
|
|||
&& gimple_has_location (stmt))
|
||||
{
|
||||
tree rhs = gimple_assign_rhs1 (stmt);
|
||||
tree lhs = gimple_assign_lhs (stmt);
|
||||
bool has_bit_insert = false;
|
||||
use_operand_p luse_p;
|
||||
imm_use_iterator liter;
|
||||
|
||||
if (TREE_NO_WARNING (rhs))
|
||||
continue;
|
||||
|
||||
|
@ -300,6 +305,26 @@ warn_uninitialized_vars (bool warn_possibly_uninitialized)
|
|||
ref.offset) <= 0)))
|
||||
continue;
|
||||
|
||||
/* Do not warn if the access is then used for a BIT_INSERT_EXPR. */
|
||||
if (TREE_CODE (lhs) == SSA_NAME)
|
||||
FOR_EACH_IMM_USE_FAST (luse_p, liter, lhs)
|
||||
{
|
||||
gimple *use_stmt = USE_STMT (luse_p);
|
||||
/* BIT_INSERT_EXPR first operand should not be considered
|
||||
a use for the purpose of uninit warnings. */
|
||||
if (gassign *ass = dyn_cast <gassign *> (use_stmt))
|
||||
{
|
||||
if (gimple_assign_rhs_code (ass) == BIT_INSERT_EXPR
|
||||
&& luse_p->use == gimple_assign_rhs1_ptr (ass))
|
||||
{
|
||||
has_bit_insert = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (has_bit_insert)
|
||||
continue;
|
||||
|
||||
/* Limit the walking to a constant number of stmts after
|
||||
we overcommit quadratic behavior for small functions
|
||||
and O(n) behavior. */
|
||||
|
|
Loading…
Add table
Reference in a new issue