From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28638 invoked by alias); 31 Jan 2003 06:09:25 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 28631 invoked from network); 31 Jan 2003 06:09:24 -0000 Received: from unknown (HELO e33.co.us.ibm.com) (32.97.110.131) by 172.16.49.205 with SMTP; 31 Jan 2003 06:09:24 -0000 Received: from westrelay03.boulder.ibm.com (westrelay03.boulder.ibm.com [9.17.194.24]) by e33.co.us.ibm.com (8.12.2/8.12.2) with ESMTP id h0V68tE0039388; Fri, 31 Jan 2003 01:08:55 -0500 Received: from unknown.host (lig32-224-94-120.us.lig-dial.ibm.com [32.224.94.120]) by westrelay03.boulder.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id h0V67ac0021070; Thu, 30 Jan 2003 23:07:37 -0700 Received: (from janis@localhost) by unknown.host (8.9.3/8.9.3) id WAA08450; Thu, 30 Jan 2003 22:10:28 -0800 Date: Fri, 31 Jan 2003 10:56:00 -0000 From: Janis Johnson To: gcc@gcc.gnu.org, pfeifer@dbai.tuwien.ac.at, bangerth@ticam.utexas.edu Subject: patch that caused part of the compile-time regression in PR opt/8361 Message-ID: <20030130221028.A8439@us.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i X-SW-Source: 2003-01/txt/msg01740.txt.bz2 I've been sick for a couple of weeks without much brainpower, but enough to build compilers and run tests occasionally. I'm trying to track down changes that increased compile times for generate.ii from PR 8361. This particular test case occasionally causes ICEs and sometimes gets compiler errors, so it's not a good candiate for a binary search; also, I wanted to keep track of times for multiple optimizations. There are some other jumps later that I'll continue to look into, but the first big one is caused by this patch: 2002-04-27 Kurt Garloff * tree-inline.c (inlinable_function_p): Improve heuristics by using a smoother function to cut down allowable inlinable size. * param.def: Add parameters max-inline-insns-single, max-inline-slope, min-inline-insns that determine the exact shape of the above function. * param.h: Likewise. Times, in seconds of user time, on i686-pc-linux-gnu for compilers built from mainline sources from the specified dates (UTC) using GCC 3.2, CFLAGS="-g -O2", checking disabled: -O0 -O2 -O3 2002-04-27 18:30 26 65 68 2002-04-27 19:00 26 72 80 2002-05-27 26 71 78 2002-06-03 26 73 ICE 2002-06-17 30 76 ICE 2002-07-15 30 77 ICE 2002-08-12 error error error 2002-09-09 29 76 77 2002-10-07 error error error 2002-11-04 81 82 2002-12-02 81 82 Output of -ftime-report with -O3 before the patch: Execution times (seconds) garbage collection : 9.24 (13%) usr 0.03 ( 4%) sys 9.26 (13%) wall cfg construction : 0.52 ( 1%) usr 0.02 ( 3%) sys 0.56 ( 1%) wall cfg cleanup : 1.65 ( 2%) usr 0.00 ( 0%) sys 1.66 ( 2%) wall trivially dead code : 1.51 ( 2%) usr 0.00 ( 0%) sys 1.54 ( 2%) wall life analysis : 2.47 ( 4%) usr 0.02 ( 3%) sys 2.47 ( 4%) wall life info update : 0.70 ( 1%) usr 0.00 ( 0%) sys 0.72 ( 1%) wall preprocessing : 0.21 ( 0%) usr 0.03 ( 4%) sys 0.24 ( 0%) wall lexical analysis : 0.55 ( 1%) usr 0.13 (18%) sys 0.67 ( 1%) wall parser : 9.53 (14%) usr 0.24 (33%) sys 9.81 (14%) wall expand : 9.01 (13%) usr 0.02 ( 3%) sys 9.11 (13%) wall varconst : 0.40 ( 1%) usr 0.00 ( 0%) sys 0.39 ( 1%) wall integration : 1.35 ( 2%) usr 0.01 ( 1%) sys 1.35 ( 2%) wall jump : 0.78 ( 1%) usr 0.01 ( 1%) sys 0.80 ( 1%) wall CSE : 11.52 (17%) usr 0.01 ( 1%) sys 11.48 (16%) wall global CSE : 1.67 ( 2%) usr 0.00 ( 0%) sys 1.69 ( 2%) wall loop analysis : 0.78 ( 1%) usr 0.01 ( 1%) sys 0.79 ( 1%) wall CSE 2 : 3.93 ( 6%) usr 0.02 ( 3%) sys 3.98 ( 6%) wall branch prediction : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall flow analysis : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall combiner : 1.51 ( 2%) usr 0.00 ( 0%) sys 1.51 ( 2%) wall if-conversion : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall regmove : 0.43 ( 1%) usr 0.00 ( 0%) sys 0.44 ( 1%) wall mode switching : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall local alloc : 1.08 ( 2%) usr 0.01 ( 1%) sys 1.07 ( 2%) wall global alloc : 2.26 ( 3%) usr 0.02 ( 3%) sys 2.28 ( 3%) wall reload CSE regs : 1.73 ( 3%) usr 0.00 ( 0%) sys 1.74 ( 2%) wall flow 2 : 0.35 ( 1%) usr 0.00 ( 0%) sys 0.35 ( 1%) wall if-conversion 2 : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall peephole 2 : 0.25 ( 0%) usr 0.00 ( 0%) sys 0.25 ( 0%) wall rename registers : 1.46 ( 2%) usr 0.03 ( 4%) sys 1.50 ( 2%) wall scheduling 2 : 1.58 ( 2%) usr 0.06 ( 8%) sys 1.64 ( 2%) wall reorder blocks : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall shorten branches : 0.24 ( 0%) usr 0.02 ( 3%) sys 0.23 ( 0%) wall final : 0.43 ( 1%) usr 0.01 ( 1%) sys 0.45 ( 1%) wall symout : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall rest of compilation : 1.16 ( 2%) usr 0.01 ( 1%) sys 1.17 ( 2%) wall TOTAL : 68.80 0.73 70.03 Output of -ftime-report with -O3 after the patch: Execution times (seconds) garbage collection : 10.32 (13%) usr 0.05 ( 6%) sys 10.38 (13%) wall cfg construction : 0.63 ( 1%) usr 0.00 ( 0%) sys 0.64 ( 1%) wall cfg cleanup : 2.93 ( 4%) usr 0.01 ( 1%) sys 2.91 ( 4%) wall trivially dead code : 1.95 ( 2%) usr 0.01 ( 1%) sys 2.02 ( 2%) wall life analysis : 2.82 ( 4%) usr 0.00 ( 0%) sys 2.85 ( 4%) wall life info update : 0.89 ( 1%) usr 0.00 ( 0%) sys 0.89 ( 1%) wall preprocessing : 0.21 ( 0%) usr 0.04 ( 5%) sys 0.22 ( 0%) wall lexical analysis : 0.51 ( 1%) usr 0.10 (12%) sys 0.62 ( 1%) wall parser : 9.49 (12%) usr 0.24 (30%) sys 9.75 (12%) wall expand : 14.10 (18%) usr 0.02 ( 2%) sys 14.11 (17%) wall varconst : 0.34 ( 0%) usr 0.02 ( 2%) sys 0.38 ( 0%) wall integration : 1.60 ( 2%) usr 0.00 ( 0%) sys 1.62 ( 2%) wall jump : 1.12 ( 1%) usr 0.05 ( 6%) sys 1.16 ( 1%) wall CSE : 11.42 (14%) usr 0.02 ( 2%) sys 11.42 (14%) wall global CSE : 2.47 ( 3%) usr 0.00 ( 0%) sys 2.44 ( 3%) wall loop analysis : 1.03 ( 1%) usr 0.03 ( 4%) sys 1.05 ( 1%) wall CSE 2 : 4.02 ( 5%) usr 0.01 ( 1%) sys 4.03 ( 5%) wall branch prediction : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall flow analysis : 0.23 ( 0%) usr 0.00 ( 0%) sys 0.24 ( 0%) wall combiner : 1.62 ( 2%) usr 0.00 ( 0%) sys 1.61 ( 2%) wall if-conversion : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall regmove : 0.42 ( 1%) usr 0.00 ( 0%) sys 0.44 ( 1%) wall mode switching : 0.17 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall local alloc : 1.36 ( 2%) usr 0.01 ( 1%) sys 1.39 ( 2%) wall global alloc : 2.53 ( 3%) usr 0.03 ( 4%) sys 2.52 ( 3%) wall reload CSE regs : 1.86 ( 2%) usr 0.00 ( 0%) sys 1.85 ( 2%) wall flow 2 : 0.32 ( 0%) usr 0.01 ( 1%) sys 0.33 ( 0%) wall if-conversion 2 : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall peephole 2 : 0.28 ( 0%) usr 0.01 ( 1%) sys 0.28 ( 0%) wall rename registers : 1.59 ( 2%) usr 0.01 ( 1%) sys 1.59 ( 2%) wall scheduling 2 : 1.64 ( 2%) usr 0.08 (10%) sys 1.72 ( 2%) wall reorder blocks : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall shorten branches : 0.26 ( 0%) usr 0.03 ( 4%) sys 0.30 ( 0%) wall final : 0.48 ( 1%) usr 0.03 ( 4%) sys 0.52 ( 1%) wall symout : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall rest of compilation : 1.35 ( 2%) usr 0.00 ( 0%) sys 1.35 ( 2%) wall TOTAL : 80.30 0.81 81.11 I'm very prone to making stupid mistakes right now, so someone ought to verify this. Janis