From 4f40aee87d1598407aafd9bb35a491d46c766c19 Mon Sep 17 00:00:00 2001 From: Aldy Hernandez Date: Wed, 11 Mar 2020 11:05:46 +0100 Subject: Document narrowing cast discrepancy. --- gcc/tree-vrp.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'gcc') 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 ; + // + // 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); -- cgit v1.1