aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2020-03-11 11:05:46 +0100
committerAldy Hernandez <aldyh@redhat.com>2020-03-11 11:29:30 +0100
commit4f40aee87d1598407aafd9bb35a491d46c766c19 (patch)
treeb16dccb3b99758f675b4dad6b9871a7ba25c3982
parentf7626d1ebf828f85179102240ce705a023bbd566 (diff)
downloadgcc-4f40aee87d1598407aafd9bb35a491d46c766c19.zip
gcc-4f40aee87d1598407aafd9bb35a491d46c766c19.tar.gz
gcc-4f40aee87d1598407aafd9bb35a491d46c766c19.tar.bz2
Document narrowing cast discrepancy.
-rw-r--r--gcc/tree-vrp.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 1270d19..a9d85ed 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -2134,6 +2134,18 @@ register_edge_assert_for_2 (tree name, edge e,
simply register the same assert for it. */
if (CONVERT_EXPR_CODE_P (rhs_code))
{
+ // This disables narrowing casts:
+ //
+ // long unsigned int _2;
+ // char _3;
+ // _3 = (char) _2;
+ // if (_3 == 0)
+ // goto <bb 6>;
+ //
+ // evrp gets [0,0]
+ // gori gets [0,0][256, 18446744073709551360]
+ //
+ // See: See tree-ssa/ivopts-lower_base.c
gori_computable set_gori_computable (false);
wide_int rmin, rmax;
tree rhs1 = gimple_assign_rhs1 (def_stmt);