From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4965 invoked by alias); 29 Jun 2010 09:11:03 -0000 Received: (qmail 4879 invoked by uid 48); 29 Jun 2010 09:10:40 -0000 Date: Tue, 29 Jun 2010 09:11:00 -0000 Subject: [Bug tree-optimization/44710] New: If-conversion generates redundant statements X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "irar at il dot ibm dot com" 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: 2010-06/txt/msg02778.txt.bz2 Starting from revision 160625 (http://gcc.gnu.org/ml/gcc-patches/2010-06/msg01155.html) if-conversion generates redundant statements for for (i = 0; i < N; i++) if (arr[i] < limit) { pos = i + 1; limit = arr[i]; } # pos_22 = PHI # i_23 = PHI # limit_24 = PHI # ivtmp.9_18 = PHI limit_9 = arr[i_23]; pos_10 = i_23 + 1; D.4534_12 = limit_9 < limit_24; <----- pretmp.7_3 = i_23 + 1; D.4535_20 = limit_9 >= limit_24; <----- pos_1 = [cond_expr] limit_9 >= limit_24 ? pos_22 : pos_10; limit_4 = [cond_expr] limit_9 >= limit_24 ? limit_24 : limit_9; prephitmp.8_2 = [cond_expr] limit_9 >= limit_24 ? pretmp.7_3 : pos_10; ivtmp.9_17 = ivtmp.9_18 - 1; D.4536_19 = D.4534_12 || D.4535_20; <----- if (ivtmp.9_17 != 0) goto ; else goto ; The statements are removed by later dce pass, but they interfere with my attempts to vectorize this loop. -- Summary: If-conversion generates redundant statements Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: irar at il dot ibm dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44710