From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5668 invoked by alias); 17 Aug 2007 20:43:15 -0000 Received: (qmail 4088 invoked by uid 48); 17 Aug 2007 20:42:57 -0000 Date: Fri, 17 Aug 2007 20:43:00 -0000 Message-ID: <20070817204257.4087.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/33099] [4.2 Regression] Scalar evolutions confusing VRP with pointer values that wrap around In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "pinskia at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2007-08/txt/msg01172.txt.bz2 ------- Comment #6 from pinskia at gcc dot gnu dot org 2007-08-17 20:42 ------- The IR is the same but scev did something different: Visiting statement: p_10 = i.0_9 - 1B; (analyze_scalar_evolution (loop_nb = 1) (scalar = p_10) (get_scalar_evolution (scalar = p_10) (scalar_evolution = )) (analyze_scalar_evolution (loop_nb = 1) (scalar = i.0_9) (get_scalar_evolution (scalar = i.0_9) (scalar_evolution = {0B, +, 1B}_1)) (set_scalar_evolution (scalar = i.0_9) (scalar_evolution = {0B, +, 1B}_1)) ) (analyze_scalar_evolution (loop_nb = 1) (scalar = 1B) (get_scalar_evolution (scalar = 1B) (scalar_evolution = 1B)) ) (set_scalar_evolution (scalar = p_10) (scalar_evolution = {4294967295B, +, 1B}_1)) ) (instantiate_parameters (loop_nb = 1) (chrec = {4294967295B, +, 1B}_1) (res = {4294967295B, +, 1B}_1)) Found new range for p_10: VARYING vs (in 4.2): Visiting statement: i.0_4 = (char *) i_23; (analyze_scalar_evolution (loop_nb = 1) (scalar = i.0_4) (get_scalar_evolution (scalar = i.0_4) (scalar_evolution = )) (analyze_scalar_evolution (loop_nb = 1) (scalar = i_23) (get_scalar_evolution (scalar = i_23) (scalar_evolution = {0, +, 1}_1)) (set_scalar_evolution (scalar = i_23) (scalar_evolution = {0, +, 1}_1)) ) (analyze_scalar_evolution (loop_nb = 1) (scalar = i_1) (get_scalar_evolution (scalar = i_1) (scalar_evolution = {0, +, 1}_1)) (set_scalar_evolution (scalar = i_1) (scalar_evolution = {0, +, 1}_1)) ) (analyze_scalar_evolution (loop_nb = 1) (scalar = N.1_3) (get_scalar_evolution (scalar = N.1_3) (scalar_evolution = )) (set_scalar_evolution (scalar = N.1_3) (scalar_evolution = N.1_3)) ) (analyze_scalar_evolution (loop_nb = 1) (scalar = N.1_3) (get_scalar_evolution (scalar = N.1_3) (scalar_evolution = N.1_3)) (set_scalar_evolution (scalar = N.1_3) (scalar_evolution = N.1_3)) ) (analyze_scalar_evolution (loop_nb = 1) (scalar = N.1_3) (get_scalar_evolution (scalar = N.1_3) (scalar_evolution = N.1_3)) (set_scalar_evolution (scalar = N.1_3) (scalar_evolution = N.1_3)) ) (instantiate_parameters (loop_nb = 1) (chrec = N.1_3) (analyze_scalar_evolution (loop_nb = 1) (scalar = N.1_3) (get_scalar_evolution (scalar = N.1_3) (scalar_evolution = N.1_3)) (set_scalar_evolution (scalar = N.1_3) (scalar_evolution = N.1_3)) ) (res = scev_not_known)) (analyze_scalar_evolution (loop_nb = 1) (scalar = i_8) (get_scalar_evolution (scalar = i_8) (scalar_evolution = )) (analyze_scalar_evolution (loop_nb = 1) (scalar = i_25) (get_scalar_evolution (scalar = i_25) (scalar_evolution = {0, +, 1}_1)) (set_scalar_evolution (scalar = i_25) (scalar_evolution = {0, +, 1}_1)) ) (analyze_scalar_evolution (loop_nb = 1) (scalar = 1) (get_scalar_evolution (scalar = 1) (scalar_evolution = 1)) ) (set_scalar_evolution (scalar = i_8) (scalar_evolution = {1, +, 1}_1)) ) (instantiate_parameters (loop_nb = 1) (chrec = {1, +, 1}_1) (res = {1, +, 1}_1)) Induction variable (int) 1 + 1 * iteration does not wrap in statement i_8 = i_25 + 1 in loop 1. Statement i_8 = i_25 + 1 is executed at most 2147483646 (bounded by 2147483646) + 1 times in loop 1. (analyze_scalar_evolution (loop_nb = 1) (scalar = i_25) (get_scalar_evolution (scalar = i_25) (scalar_evolution = {0, +, 1}_1)) (set_scalar_evolution (scalar = i_25) (scalar_evolution = {0, +, 1}_1)) ) (instantiate_parameters (loop_nb = 1) (chrec = {0, +, 1}_1) (res = {0, +, 1}_1)) Induction variable (int) 0 + 1 * iteration does not wrap in statement i_25 = ASSERT_EXPR in loop 1. Statement i_25 = ASSERT_EXPR is executed at most 2147483647 (bounded by 2147483647) + 1 times in loop 1. (set_scalar_evolution (scalar = i.0_4) (scalar_evolution = {0B, +, 1B}_1)) ) (instantiate_parameters (loop_nb = 1) (chrec = {0B, +, 1B}_1) (res = {0B, +, 1B}_1)) Found new range for i.0_4: [0B, -1B] -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33099