From a5e14a42da5eba45cc6528e678ba7e191b9c6cd8 Mon Sep 17 00:00:00 2001 From: Martin Jambor Date: Mon, 9 Jan 2017 19:26:37 +0100 Subject: [PR 78365] Prudent type handling in IPA VR-prop 2017-01-09 Martin Jambor PR ipa/78365 PR ipa/78599 * ipa-prop.h (ipa_jump_func): Swap positions of vr_known and m_vr. * ipa-cp.c (ipa_vr_operation_and_type_effects): New function. (propagate_vr_accross_jump_function): Use the above function for all value range computations for pass-through jump functions and type converasion from explicit value range values. (ipcp_propagate_stage): Do not attempt to deduce types of formal parameters from TYPE_ARG_TYPES. * ipa-prop.c (ipa_write_jump_function): Remove trailing whitespace. (ipa_write_node_info): Stream type of the actual argument. (ipa_read_node_info): Likewise. Also remove trailing whitespace. testsuite/ * gcc.dg/torture/pr78365.c: New test. From-SVN: r244232 --- gcc/ipa-prop.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'gcc/ipa-prop.h') diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h index 341d9db6c63..c9a69ab1f53 100644 --- a/gcc/ipa-prop.h +++ b/gcc/ipa-prop.h @@ -178,9 +178,10 @@ struct GTY (()) ipa_jump_func /* Information about zero/non-zero bits. */ struct ipa_bits bits; - /* Information about value range. */ - bool vr_known; + /* Information about value range, containing valid data only when vr_known is + true. */ value_range m_vr; + bool vr_known; enum jump_func_type type; /* Represents a value of a jump function. pass_through is used only in jump -- cgit v1.2.3