[PR 71234] Avoid valgrind warning in ipa-cp

Martin Jambor mjambor@suse.cz
Mon May 23 16:28:00 GMT 2016


Hi,

ipa_find_agg_cst_for_param can leave from_global_constant as it is
when it returns NULL.  It's user ipa_get_indirect_edge_target_1 then
reads that uninitialized value when it tests whether it should NULLify
the result itself, which was caught by valgrind.

Fixed by the patch below, which checks whether
ipa_find_agg_cst_for_param returned non-NULL before loading
from_global_constant.  I decided to address it here rather than in
ipa_find_agg_cst_for_param because that would require a check that
from_global_constant in not NULL there and because it is consistent
with how by_ref is returned in other functions in ipa-prop.

Bootstrapped and tested on x86_64-linux, I will go ahead and commit it
as obvious.

Martin


2016-05-23  Martin Jambor  <mjambor@suse.cz>

	PR ipa/71234
	* ipa-cp.c (ipa_get_indirect_edge_target_1): Only check value of
	from_global_constant if t is not NULL.
---
 gcc/ipa-cp.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 8caa973..4b7f6bb 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -2027,7 +2027,8 @@ ipa_get_indirect_edge_target_1 (struct cgraph_edge *ie,
 					      ie->indirect_info->offset,
 					      ie->indirect_info->by_ref,
 					      &from_global_constant);
-	      if (!from_global_constant
+	      if (t
+		  && !from_global_constant
 		  && !ie->indirect_info->guaranteed_unmodified)
 		t = NULL_TREE;
 	    }
-- 
2.8.2



More information about the Gcc-patches mailing list