From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2103.outbound.protection.outlook.com [40.107.20.103]) by sourceware.org (Postfix) with ESMTPS id 387903858C5F for ; Mon, 18 Mar 2024 20:27:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 387903858C5F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=Syrmia.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Syrmia.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 387903858C5F Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.20.103 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1710793655; cv=pass; b=MbEv82NUd/uYkBq/3JnVHdRHDw4TCjPtkjOsO8ZxfiAkbR2JRUuTLsv1bASjRNB1XQWHdi+QQJZQqgMUpCGGOAjrTYil9j6VwFnWk7nCWjmpdKqOnp7hpj1wvZnBnVO7GW1tKpL3o6Sh3L7cL1eXVIzktSeolhtSyrgeYqOhD7w= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1710793655; c=relaxed/simple; bh=wwulsj4TWotK5R6FTxzMK6nlW59cLm1vFgLGzcpeiQg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=NYu5PfHAdkDIA74wJ69ewLCzNqq0hza2VMZ/Byf3j89IQYpgVnppxouBDY1XfH0tckTNdacr3pqVrbAfZNY66zbdIuD/mE30SEF4t1yv0Teh7+q39t5MZdbksxWD2QjjPaR/Iysg4Jj2JBQ3phuE9KzyeIwuI09NBqtFXQqlQXk= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LiaWnbD3knp+awqOV2dN6obHNsfrErt1S6AsVzd7iCAKOoAi2PPeNVTnlrm+9kGBGnCDqkbovof46DYN2IqRDb8wCMAqf5K/VG2WtrXXxA58+SHrs/4x3aWmFtqc1kdMWrrOFx9WhvDDBtDFVdDWxB3PIAfqGMG1fD6J5ultkWTWSpQw7slPSwAxvuvuDuLbWUG1oNnK9P4MiYnaDi+wYQB7lfEnPghm9R8J30X/YiZLp3Qxb/cxqZgdUeLdTChHgeNLjeFvCCLTi/W5RjSP6XKw3OZXww0weTdXRyD1qvSLGjglx2ei+olIa6VLBlKnxrv+fT39Sc5K+XheZ/KzaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/Ap02U3RNvu9Rb5IpOuDsCKmnTHhh71At6WPTOS/8CU=; b=KmgIRsoaBSISLmrDN2hOQP9JI2eOJ1j0HsSY8SQ5mcKtkeeU5cl8JxlujPTDKReYjIZ+SVIfzXvdKflzbL1ie4GYF3eCEJEj/NpkkYRbei25QwsoKwCXrFUxM0Eyvj4yqi3M6JLjGwSJ4RA9aFP3sELv9Xr5YpTVPfKK7rCxP1IzYtn00nr655PaUKmOn5F1RXpnKJTgoWa1PXjgqFU/gQ+eAxwI9nviBNsp1riFUCRXnZ+dM7hf9oP6U3aTqawTLGgzfB1Puq+oCMWPi2AGXGcQ3Oameii1AtijCitJrF80KJCGOffVE0VglvF7dEBvAALR184hgM/HroOoAFyvGw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=syrmia.com; dmarc=pass action=none header.from=syrmia.com; dkim=pass header.d=syrmia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=syrmia.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/Ap02U3RNvu9Rb5IpOuDsCKmnTHhh71At6WPTOS/8CU=; b=INe0GK4px5+8K0ORPQxcha2Rj64rIZc+/CTKS2EqfgwOLEJPeY1foB7TZ02v2tUJEvHb5cR+jRR1MxPr86ggrYp6gJgaNMYOBS8e5Ah2kaOr3gomKCjz/DI+izf/H7803XLIopLsAuQeCfI15ZBzdjIE/tx2/t1qQQQmVGVX4sM= Received: from AM0PR03MB4611.eurprd03.prod.outlook.com (2603:10a6:208:c8::32) by AM9PR03MB7506.eurprd03.prod.outlook.com (2603:10a6:20b:262::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.21; Mon, 18 Mar 2024 20:27:24 +0000 Received: from AM0PR03MB4611.eurprd03.prod.outlook.com ([fe80::c935:4077:fa80:a2d0]) by AM0PR03MB4611.eurprd03.prod.outlook.com ([fe80::c935:4077:fa80:a2d0%3]) with mapi id 15.20.7386.025; Mon, 18 Mar 2024 20:27:24 +0000 From: Aleksandar Rakic To: "gcc-patches@gcc.gnu.org" CC: Jovan Dmitrovic , "richard.guenther@gmail.com" , Djordje Todorovic , "jeffreyalaw@gmail.com" , Uros Beric Subject: Re: [PATCH 1/2] ivopts: Revert computation of address cost complexity. Thread-Topic: [PATCH 1/2] ivopts: Revert computation of address cost complexity. Thread-Index: AQHaeW8jjazwY2hLyE+saoVjO+5aPg== Date: Mon, 18 Mar 2024 20:27:23 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM0PR03MB4611:EE_|AM9PR03MB7506:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yNaePxUlw0ACIHPt+tVPM7FDPVPsyUXkBQQjKivb0SsF8XDAhnkdK4s560r1tu82d7tsR9Hyu4sMjX0zPpj424p2QRi+kInvbiTg/133kObk14spctbep9yOqTpp8xHad0EOsnUu0O9UsaKd+8vhEIlWgetR6F0Bx/N3t23XTGNB8EKioJVHHJLV3FmeTSuykfwWkgchP8dC13mcHm4SEGRuDAN6zIRo2CUNv+lvsHzQxU6RVH5KV/Etp6PsgoEipEEhrSnCiMG44DSkQ2Ly663WVJlZ5wPiGW7dazp7mvYzjHNnjcrQCNbxSviQKnRPbnUK0m3TJKvwIOa+/d0Z11lXJXsxSE0L+4HazSzxu4BGip1olUpUIFg5dB06zPt9l+Z6nLWDr5KZSGluh5ovdghZerxvA58uro5wWwYYJ50YVjaCzzIARgTjcLdwUwm0V+nHALBn8dQQkMGLpcjptVVt5Vz3qVJO1EPJd51i8YWcY1X7qBqSVIiy5HJRN+XqfefyGHUbAQCD4PbjGVvIgSmIOcWtem/NC9gxJSUnC2e7Q6YlB2H5lGYSczzKH8I9+tdW7l+Hornc5Q/DblTGNjAQc15cGoppAWHe1ocz84s= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR03MB4611.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366007)(376005)(1800799015);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-2?Q?WLZ+pjIkZNRWbMAFZn6Y130st8L/IZhCrkvSAsWYHRpnvuNm3MpbbV12il?= =?iso-8859-2?Q?Xt7GKxltTjx9hTrcyIge4oGbpUro5t0425LHdruvGdopPPcM01PJX3nQ+5?= =?iso-8859-2?Q?dk74z+clzI/1NnJsV0DhgtF3+Ha5Y6SyDQ/xoLC6o/Jy7x7NQJh2f0JQ8a?= =?iso-8859-2?Q?netTjYnmTny53pttRQPDOR6VfxZmfnAb8FEkpLWCzH+z05uJAKEy/SpFyx?= =?iso-8859-2?Q?4tksq2cfKvZJP4vJpozQvhC5q8sLYumHSLDI0cQaO0jnEZdIyC0uhHD5pL?= =?iso-8859-2?Q?jEAjSKGx54L+etUwZROIMtzexgIKpekK8El7jWfTjKXv746RhOCKfCJvMh?= =?iso-8859-2?Q?L5M6wJxjsRV7EsjY1pmKPpMh8ypG0yCgIRcy0/OSSI/9rczOxzeluaTrTp?= =?iso-8859-2?Q?9kyC8qD8u90C2L8/aZZddjYW+8F549uIqGdmbevFifiKO6pavKNkUDAk17?= =?iso-8859-2?Q?VS37pro39Sv0UAs/6Mrk3wPgZAg/pey1AWXmSxn57rIxh7oYkoeEye2plD?= =?iso-8859-2?Q?yCqcXupLAFwSDJgOUVjspkmm/coAaV319SlZQRzwx/h4rWVUWhREFozpUK?= =?iso-8859-2?Q?MkaNEeK5bNw01V8R4HdikatrQa9osrj+uG2QAMbQoj5NaVvM/ui/3IsnjX?= =?iso-8859-2?Q?O+q5PQUnJxB2pIcZXnzl5lagga9bsfS5NGuosmyn75Ex3IMc3ipwllage3?= =?iso-8859-2?Q?jATQ1YRJ0amhh7EsoEcy7siHz0xKtkAYOetN+LVMdi2xuW62ZFJuo6mJ0q?= =?iso-8859-2?Q?jiimPn6QhaON6S4ichOQU2hoEHlC5jQMnr29uw5PUTj1+WZEHAemb/QC6x?= =?iso-8859-2?Q?mUqEnz44wy+qwGSiQqSof9Dg9m0l5iKcd/F8VN0GnPsu2JzxLdkCre3KEk?= =?iso-8859-2?Q?gGM5ONiApCJ2LLNKuybBIk21HkYWYz+GZ9JYsqsK8VXxfq9UJiR570QvaL?= =?iso-8859-2?Q?a8jenjwZpW65j5jwHUiBrLp/Rqez9SydFRgzOqP8p/4iax3dsz1JxLyJQC?= =?iso-8859-2?Q?+YThKTc7SUCjR66Nh3G8XkTc7xhP/50O4uGqVZHczy9kjtCToES84lNDVQ?= =?iso-8859-2?Q?9dAs0yfddnB8bVMnHR1mb51YUYn14UxwjJUhOar5DllxlaJJNElqtMcnAG?= =?iso-8859-2?Q?yUFR2C7WoVltBJ1VAeq1Af8+4G1fuyI9ONnovZxYcWuAUxmyIwY2Lfnkhd?= =?iso-8859-2?Q?/V+xOAru3uvtYDpv36S5kxpBYDYtaTB/lgd0RUkd+9l+5T+SHDyxVcIC99?= =?iso-8859-2?Q?VHXUp3RusA9JtGMfVXeOldbDD21KkcA0w5AGwv0k85ypoJ+9es3X7f3ash?= =?iso-8859-2?Q?aW8J0zz4HyoLKP5zXjlXdntlQcaVUS7bjUUafXxTn6G/lEtWEb7H18NOPV?= =?iso-8859-2?Q?0I8DMXloYfhO4ofJfjmJeVVnSyiq38cDu2Q+vouNUN5Micfis8F1NOLHDY?= =?iso-8859-2?Q?ked4pSr5UbC4NwM/Fp6sz8b0FhFm6hVCxLwxN46u/n+Pe/25/YJarzouPW?= =?iso-8859-2?Q?ycQx6YvRsLARBZ47PKGNjzU5Mt02M04qP3PJXOFRJWJHgLIFxf1NoKrJv5?= =?iso-8859-2?Q?Y1lhfyNwV6jblLrWMUrAp0wSsI9hmrl5X3iMjyS9TDPlhqQzjWu54evl44?= =?iso-8859-2?Q?o/JInbz+rhp/A7eMiaoaKvf9ZsSJ93TdflB88842vcTECS3mEsO+Phyw?= =?iso-8859-2?Q?=3D=3D?= Content-Type: text/plain; charset="iso-8859-2" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: syrmia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM0PR03MB4611.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a1adf26-a527-4fc3-5062-08dc4789d20a X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2024 20:27:23.9598 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 19214a73-c1ab-4e19-8f59-14bdcb09a66e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qiyztlU0jTy+7HEf6xAig0sYKeUIQS22wNRulU2lyDMfeUNGX3phGKghDGDSXKDX1Aqf6DI0ZsK15V2OqXMLABXdX4vCSrDwA6cVWJiASgk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7506 X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: >From dbf49f2872efcc14d2ea41eb7d616498dca9789f Mon Sep 17 00:00:00 2001=0A= From: Aleksandar Raki=E6 =0A= Date: Tue, 5 Mar 2024 11:55:01 +0100=0A= Subject: [PATCH] ivopts: Fixed bug 109429=0A= =0A= This patch modifies the order of the complexity calculation. By fixing the= =0A= complexities, the candidate selection is also fixed, which leads to the sma= ller=0A= code size.=0A= =0A= This patch also fixes the complexity if the variable is present in=0A= the address expression, similarly to the variable 'var_present' in the=0A= commit c2b64ce.=0A= =0A= It also differentiates the adding of the autoinc_cost and the address=0A= cost (acost) to the cost, similarly to the commit c2b64ce.=0A= =0A= It also contains the C test and the script that generates the=0A= assembly file and the output of the compiler. The assembly code=0A= obtained after the modification of the file tree-ssa-loop-ivopts.cc is=0A= smaller in size than the assembly code obtained before that. The output=0A= of the compiler shows the difference in complexities for the function dgefa= =0A= for the loop 3 for the group 1.=0A= =0A= This patch is available on the gcc fork on the following address:=0A= https://github.com/rakicaleksandar1999/gcc/tree/bug_109429.=0A= =0A= The description of the bug 109429 is on the following address:=0A= https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D109429.=0A= =0A= gcc/ChangeLog:=0A= =0A= * tree-ssa-loop-ivopts.cc (get_address_cost): Fixed the=0A= complexities calculation.=0A= =0A= gcc/testsuite/ChangeLog:=0A= =0A= * after.s: The assembly file obtained by compiling the fp_foo.c=0A= file after modification of the tree-ssa-loop-ivopts.cc file.=0A= * after.txt: The compiler-generated output obtained by compiling=0A= the fp_foo.c file after modification of the=0A= tree-ssa-loop-ivopts.cc file.=0A= * before.s: The assembly file obtained by compiling the fp_foo.c=0A= file before modification of the tree-ssa-loop-ivopts.cc file.=0A= * before.txt: The compiler-generated output obtained by compiling=0A= the fp_foo.c file before modification of the=0A= tree-ssa-loop-ivopts.cc file.=0A= * fp_foo.c: The C test.=0A= * test_script.sh: The script used for compiling the fp_foo.c file.=0A= =0A= Signed-off-by: Aleksandar Raki=E6 =0A= ---=0A= gcc/testsuite/after.s | 148 ++=0A= gcc/testsuite/after.txt | 2792 ++++++++++++++++++++++++++++++++++=0A= gcc/testsuite/before.s | 152 ++=0A= gcc/testsuite/before.txt | 2694 ++++++++++++++++++++++++++++++++=0A= gcc/testsuite/fp_foo.c | 19 +=0A= gcc/testsuite/test_script.sh | 10 +=0A= gcc/tree-ssa-loop-ivopts.cc | 75 +-=0A= 7 files changed, 5853 insertions(+), 37 deletions(-)=0A= create mode 100644 gcc/testsuite/after.s=0A= create mode 100644 gcc/testsuite/after.txt=0A= create mode 100644 gcc/testsuite/before.s=0A= create mode 100644 gcc/testsuite/before.txt=0A= create mode 100644 gcc/testsuite/fp_foo.c=0A= create mode 100644 gcc/testsuite/test_script.sh=0A= =0A= diff --git a/gcc/testsuite/after.s b/gcc/testsuite/after.s=0A= new file mode 100644=0A= index 00000000000..a32bb8b3614=0A= --- /dev/null=0A= +++ b/gcc/testsuite/after.s=0A= @@ -0,0 +1,148 @@=0A= + .file 1 "fp_foo.c"=0A= + .section .mdebug.abi64=0A= + .previous=0A= + .nan 2008=0A= + .module fp=3D64=0A= + .module oddspreg=0A= + .module arch=3Dmips64r6=0A= + .abicalls=0A= + .text=0A= + .align 2=0A= + .align 3=0A= + .globl daxpy=0A= + .set nomips16=0A= + .set nomicromips=0A= + .ent daxpy=0A= + .type daxpy, @function=0A= +daxpy:=0A= + .frame $sp,0,$31 # vars=3D 0, regs=3D 0/0, args=3D 0, gp=3D 0=0A= + .mask 0x00000000,0=0A= + .fmask 0x00000000,0=0A= + .set noreorder=0A= + .set nomacro=0A= + blezc $6,.L7=0A= + dlsa $6,$6,$4,2=0A= + .align 3=0A= +.L3:=0A= + lwc1 $f1,0($5)=0A= + daddiu $4,$4,4=0A= + lwc1 $f0,-4($4)=0A= + daddiu $5,$5,4=0A= + maddf.s $f0,$f1,$f15=0A= + bne $4,$6,.L3=0A= + swc1 $f0,-4($4)=0A= +=0A= +.L7:=0A= + jrc $31=0A= + .set macro=0A= + .set reorder=0A= + .end daxpy=0A= + .size daxpy, .-daxpy=0A= + .align 2=0A= + .align 3=0A= + .globl dgefa=0A= + .set nomips16=0A= + .set nomicromips=0A= + .ent dgefa=0A= + .type dgefa, @function=0A= +dgefa:=0A= + .frame $sp,48,$31 # vars=3D 0, regs=3D 5/0, args=3D 0, gp=3D 0=0A= + .mask 0x100f0000,-8=0A= + .fmask 0x00000000,0=0A= + .set noreorder=0A= + .set nomacro=0A= + li $2,1 # 0x1=0A= + bgec $2,$6,.L23=0A= + daddiu $sp,$sp,-48=0A= + addiu $14,$6,-1=0A= + move $10,$6=0A= + sd $19,32($sp)=0A= + sd $18,24($sp)=0A= + move $11,$4=0A= + sd $17,16($sp)=0A= + move $17,$5=0A= + sd $16,8($sp)=0A= + dlsa $9,$7,$4,2=0A= + addiu $19,$5,1=0A= + dsll $12,$5,2=0A= + move $25,$5=0A= + move $24,$0=0A= + move $13,$0=0A= + move $15,$0=0A= + move $18,$14=0A= + .align 3=0A= +.L11:=0A= + addiu $7,$15,1=0A= + addiu $16,$15,1=0A= + daddiu $13,$13,1=0A= + move $15,$7=0A= + bgec $7,$10,.L15=0A= + daddiu $8,$24,1=0A= + daddu $6,$13,$25=0A= + dlsa $8,$8,$11,2=0A= + dsll $6,$6,2=0A= + move $5,$14=0A= + .align 3=0A= +.L14:=0A= + daddu $2,$9,$6=0A= + daddu $4,$11,$6=0A= + lwc1 $f2,-4($2)=0A= + move $3,$0=0A= + move $2,$8=0A= + .align 3=0A= +.L13:=0A= + lwc1 $f1,0($4)=0A= + daddiu $2,$2,4=0A= + lwc1 $f0,-4($2)=0A= + addiu $3,$3,1=0A= + daddiu $4,$4,4=0A= + maddf.s $f0,$f2,$f1=0A= + swc1 $f0,-4($2)=0A= + bltc $3,$5,.L13=0A= + addiu $7,$7,1=0A= + bne $10,$7,.L14=0A= + daddu $6,$6,$12=0A= +=0A= +.L15:=0A= + addiu $14,$14,-1=0A= + daddiu $9,$9,-4=0A= + addu $24,$24,$19=0A= + bne $18,$16,.L11=0A= + addu $25,$17,$25=0A= +=0A= + ld $19,32($sp)=0A= + ld $18,24($sp)=0A= + ld $17,16($sp)=0A= + ld $16,8($sp)=0A= + jr $31=0A= + daddiu $sp,$sp,48=0A= +=0A= +.L23:=0A= + jrc $31=0A= + .set macro=0A= + .set reorder=0A= + .end dgefa=0A= + .size dgefa, .-dgefa=0A= + .section .text.startup,"ax",@progbits=0A= + .align 2=0A= + .align 3=0A= + .globl main=0A= + .set nomips16=0A= + .set nomicromips=0A= + .ent main=0A= + .type main, @function=0A= +main:=0A= + .frame $sp,0,$31 # vars=3D 0, regs=3D 0/0, args=3D 0, gp=3D 0=0A= + .mask 0x00000000,0=0A= + .fmask 0x00000000,0=0A= + .set noreorder=0A= + .set nomacro=0A= + jr $31=0A= + move $2,$0=0A= +=0A= + .set macro=0A= + .set reorder=0A= + .end main=0A= + .size main, .-main=0A= + .ident "GCC: (GNU) 14.0.1 20240214 (experimental)"=0A= + .section .note.GNU-stack,"",@progbits=0A= diff --git a/gcc/testsuite/after.txt b/gcc/testsuite/after.txt=0A= new file mode 100644=0A= index 00000000000..772f92d2b20=0A= --- /dev/null=0A= +++ b/gcc/testsuite/after.txt=0A= @@ -0,0 +1,2792 @@=0A= +tree_ssa_iv_optimize=0A= +;;=0A= +;; Loop 1=0A= +;; header 3, latch 6=0A= +;; depth 1, outer 0, finite_p=0A= +;; niter (unsigned int) n_12(D) + 4294967295=0A= +;; upper_bound 2147483646=0A= +;; likely_upper_bound 2147483646=0A= +;; iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 05119324 (estimated locally, freq 0.8900)=0A= +;; nodes: 3 6=0A= +Processing loop 1 at fp_foo.c:3=0A= + single exit 3 -> 7, exit condition if (n_12(D) > i_17)=0A= +=0A= +=0A= +=0A= +Loops in function: daxpy=0A= +loop_0 (header =3D 0, latch =3D 1)=0A= +{=0A= + bb_2 (preds =3D {bb_0 }, succs =3D {bb_5 bb_4 })=0A= + {=0A= + [local count: 118111600]:=0A= + if (n_12(D) > 0)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_5 (preds =3D {bb_2 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 105119324]:=0A= +=0A= + }=0A= + bb_7 (preds =3D {bb_3 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 105119324]:=0A= + # .MEM_22 =3D PHI <.MEM_16(3)>=0A= +=0A= + }=0A= + bb_4 (preds =3D {bb_2 bb_7 }, succs =3D {bb_1 })=0A= + {=0A= + [local count: 118111600]:=0A= + # .MEM_29 =3D PHI <.MEM_11(D)(2), .MEM_22(7)>=0A= + # VUSE <.MEM_29>=0A= + return;=0A= +=0A= + }=0A= + loop_1 (header =3D 3, latch =3D 6, finite_p=0A= + niter (unsigned int) n_12(D) + 4294967295=0A= + upper_bound 2147483646=0A= + likely_upper_bound 2147483646=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:105= 119324 (estimated locally, freq 0.8900))=0A= + {=0A= + bb_3 (preds =3D {bb_6 bb_5 }, succs =3D {bb_6 bb_7 })=0A= + {=0A= + [local count: 955630224]:=0A= + # i_20 =3D PHI =0A= + # .MEM_21 =3D PHI <.MEM_16(6), .MEM_11(D)(5)>=0A= + _1 =3D (long unsigned int) i_20;=0A= + _2 =3D _1 * 4;=0A= + _3 =3D vector1_13(D) + _2;=0A= + # VUSE <.MEM_21>=0A= + _4 =3D *_3;=0A= + _5 =3D vector2_14(D) + _2;=0A= + # VUSE <.MEM_21>=0A= + _6 =3D *_5;=0A= + _7 =3D _6 * fp_const_15(D);=0A= + _8 =3D _4 + _7;=0A= + # .MEM_16 =3D VDEF <.MEM_21>=0A= + *_3 =3D _8;=0A= + i_17 =3D i_20 + 1;=0A= + if (n_12(D) > i_17)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_6 (preds =3D {bb_3 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 850510900]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + }=0A= +}=0A= +Analyzing # of iterations of loop 1=0A= + exit condition [1, + , 1](no_overflow) < n_12(D)=0A= + bounds on difference of bases: 0 ... 2147483646=0A= + result:=0A= + # of iterations (unsigned int) n_12(D) + 4294967295, bounded by 214748= 3646=0A= + number of iterations (unsigned int) n_12(D) + 4294967295=0A= +=0A= +:=0A= +IV struct:=0A= + SSA_NAME: _1=0A= + Type: long unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _2=0A= + Type: long unsigned int=0A= + Base: 0=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _3=0A= + Type: float *=0A= + Base: vector1_13(D)=0A= + Step: 4=0A= + Object: (void *) vector1_13(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _5=0A= + Type: float *=0A= + Base: vector2_14(D)=0A= + Step: 4=0A= + Object: (void *) vector2_14(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: i_17=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: i_20=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +:=0A= +Group 0:=0A= + Type: REFERENCE ADDRESS=0A= + Use 0.0:=0A= + At stmt: _4 =3D *_3;=0A= + At pos: *_3=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector1_13(D)=0A= + Step: 4=0A= + Object: (void *) vector1_13(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= + Use 0.1:=0A= + At stmt: *_3 =3D _8;=0A= + At pos: *_3=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector1_13(D)=0A= + Step: 4=0A= + Object: (void *) vector1_13(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 1:=0A= + Type: REFERENCE ADDRESS=0A= + Use 1.0:=0A= + At stmt: _6 =3D *_5;=0A= + At pos: *_5=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector2_14(D)=0A= + Step: 4=0A= + Object: (void *) vector2_14(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 2:=0A= + Type: COMPARE=0A= + Use 2.0:=0A= + At stmt: if (n_12(D) > i_17)=0A= + At pos: i_17=0A= + IV struct:=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +Predict doloop failure due to target specific checks.=0A= +Candidate 0:=0A= + Var befor: ivtmp.6=0A= + Var after: ivtmp.6=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 1:=0A= + Var befor: ivtmp.7=0A= + Var after: ivtmp.7=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 2:=0A= + Var befor: ivtmp.8=0A= + Var after: ivtmp.8=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 3:=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Var befor: ivtmp.9=0A= + Var after: ivtmp.9=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) vector1_13(D)=0A= + Step: 4=0A= + Object: (void *) vector1_13(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Var befor: ivtmp.10=0A= + Var after: ivtmp.10=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) vector2_14(D)=0A= + Step: 4=0A= + Object: (void *) vector2_14(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 6:=0A= + Var befor: ivtmp.11=0A= + Var after: ivtmp.11=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 7:=0A= + Var befor: ivtmp.12=0A= + Var after: ivtmp.12=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +: 0, 1, 2, 3,=0A= +=0A= + Related:=0A= + Group 0: 0, 1, 2, 3, 4, 7=0A= + Group 1: 0, 1, 2, 3, 5, 7=0A= + Group 2: 0, 1, 2, 3, 6=0A= +=0A= +:=0A= + cand cost=0A= +force_expr_to_var_cost size costs:=0A= + integer 0=0A= + symbol 5=0A= + address 5=0A= + other 24=0A= +=0A= +force_expr_to_var_cost speed costs:=0A= + integer 0=0A= + symbol 5=0A= + address 5=0A= + other 24=0A= +=0A= + 0 5=0A= + 1 5=0A= + 2 5=0A= + 3 4=0A= + 4 5=0A= + 5 5=0A= + 6 5=0A= + 7 5=0A= +=0A= +=0A= +:=0A= +Inv 4: n_12(D) (eliminable)=0A= +Inv 1: vector1_13(D) (eliminable)=0A= +Inv 2: vector2_14(D) (eliminable)=0A= +Inv 3: fp_const_15(D) (eliminable)=0A= +=0A= +:=0A= +inv_expr 1: (unsigned long) n_12(D) * 4 + (unsigned long) vector1_13(D)= =0A= +inv_expr 2: (unsigned long) n_12(D) * 4 + (unsigned long) vector2_14(D)= =0A= +=0A= +:=0A= +Group 0:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 18 2 NIL; 1=0A= + 2 18 4 NIL; 1=0A= + 4 2 0 NIL; NIL;=0A= + 7 10 2 NIL; 1=0A= +=0A= +Group 1:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 9 1 NIL; 2=0A= + 2 9 2 NIL; 2=0A= + 5 1 0 NIL; NIL;=0A= + 7 5 1 NIL; 2=0A= +=0A= +Group 2:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 0 0 NIL; 4=0A= + 1 0 0 NIL; 4=0A= + 2 1 0 NIL; 4=0A= + 3 0 0 NIL; 4=0A= + 4 1 0 1; NIL;=0A= + 5 1 0 2; NIL;=0A= + 6 0 0 NIL; 4=0A= + 7 1 0 NIL; 4=0A= +=0A= +=0A= +:=0A= + target_avail_regs 26=0A= + target_clobbered_regs 16=0A= + target_reg_cost 4=0A= + target_spill_cost 24=0A= + regs_used 0=0A= + cost for size:=0A= + ivs cost=0A= + 0 0=0A= + 1 2=0A= + 2 4=0A= + 3 6=0A= + 4 8=0A= + 5 10=0A= + 6 12=0A= + 7 14=0A= + 8 16=0A= + 9 18=0A= + 10 20=0A= + 11 22=0A= + 12 24=0A= + 13 26=0A= + 14 28=0A= + 15 30=0A= + 16 32=0A= + 17 34=0A= + 18 36=0A= + 19 38=0A= + 20 40=0A= + 21 42=0A= + 22 44=0A= + 23 115=0A= + 24 120=0A= + 25 125=0A= + 26 130=0A= + 27 179=0A= + 28 228=0A= + 29 277=0A= + 30 326=0A= + 31 375=0A= + 32 424=0A= + 33 473=0A= + 34 522=0A= + 35 571=0A= + 36 620=0A= + 37 669=0A= + 38 718=0A= + 39 767=0A= + 40 816=0A= + 41 865=0A= + 42 914=0A= + 43 963=0A= + 44 1012=0A= + 45 1061=0A= + 46 1110=0A= + 47 1159=0A= + 48 1208=0A= + 49 1257=0A= + 50 1306=0A= + 51 1355=0A= + 52 1404=0A= +=0A= +Initial set of candidates:=0A= + cost: 37 (complexity 3)=0A= + reg_cost: 5=0A= + cand_cost: 5=0A= + cand_group_cost: 27 (complexity 3)=0A= + candidates: 1=0A= + group:0 --> iv_cand:1, cost=3D(18,2)=0A= + group:1 --> iv_cand:1, cost=3D(9,1)=0A= + group:2 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: 1, 2, 4=0A= + invariant expressions: =0A= +=0A= +Improved to:=0A= + cost: 26 (complexity 3)=0A= + reg_cost: 5=0A= + cand_cost: 5=0A= + cand_group_cost: 16 (complexity 3)=0A= + candidates: 7=0A= + group:0 --> iv_cand:7, cost=3D(10,2)=0A= + group:1 --> iv_cand:7, cost=3D(5,1)=0A= + group:2 --> iv_cand:7, cost=3D(1,0)=0A= + invariant variables: 1, 2, 4=0A= + invariant expressions: =0A= +=0A= +Improved to:=0A= + cost: 24 (complexity 1)=0A= + reg_cost: 6=0A= + cand_cost: 10=0A= + cand_group_cost: 8 (complexity 1)=0A= + candidates: 4, 7=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:7, cost=3D(5,1)=0A= + group:2 --> iv_cand:7, cost=3D(1,0)=0A= + invariant variables: 2, 4=0A= + invariant expressions: =0A= +=0A= +Improved to:=0A= + cost: 19 (complexity 0)=0A= + reg_cost: 5=0A= + cand_cost: 10=0A= + cand_group_cost: 4 (complexity 0)=0A= + candidates: 4, 5=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:5, cost=3D(1,0)=0A= + group:2 --> iv_cand:4, cost=3D(1,0)=0A= + invariant variables: =0A= + invariant expressions: 1=0A= +=0A= +Initial set of candidates:=0A= + cost: 26 (complexity 3)=0A= + reg_cost: 5=0A= + cand_cost: 5=0A= + cand_group_cost: 16 (complexity 3)=0A= + candidates: 7=0A= + group:0 --> iv_cand:7, cost=3D(10,2)=0A= + group:1 --> iv_cand:7, cost=3D(5,1)=0A= + group:2 --> iv_cand:7, cost=3D(1,0)=0A= + invariant variables: 1, 2, 4=0A= + invariant expressions: =0A= +=0A= +Improved to:=0A= + cost: 24 (complexity 1)=0A= + reg_cost: 6=0A= + cand_cost: 10=0A= + cand_group_cost: 8 (complexity 1)=0A= + candidates: 4, 7=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:7, cost=3D(5,1)=0A= + group:2 --> iv_cand:7, cost=3D(1,0)=0A= + invariant variables: 2, 4=0A= + invariant expressions: =0A= +=0A= +Improved to:=0A= + cost: 19 (complexity 0)=0A= + reg_cost: 5=0A= + cand_cost: 10=0A= + cand_group_cost: 4 (complexity 0)=0A= + candidates: 4, 5=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:5, cost=3D(1,0)=0A= + group:2 --> iv_cand:4, cost=3D(1,0)=0A= + invariant variables: =0A= + invariant expressions: 1=0A= +=0A= +Original cost 19 (complexity 0)=0A= +=0A= +Final cost 19 (complexity 0)=0A= +=0A= +Selected IV set for loop 1 at fp_foo.c:3, 10 avg niters, 2 IVs:=0A= +Candidate 4:=0A= + Var befor: ivtmp.9_28=0A= + Var after: ivtmp.9_27=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) vector1_13(D)=0A= + Step: 4=0A= + Object: (void *) vector1_13(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Var befor: ivtmp.10_25=0A= + Var after: ivtmp.10_24=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) vector2_14(D)=0A= + Step: 4=0A= + Object: (void *) vector2_14(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +Replacing exit test: if (n_12(D) > i_17)=0A= +tree_ssa_iv_optimize=0A= +;;=0A= +;; Loop 3=0A= +;; header 8, latch 13=0A= +;; depth 3, outer 2, finite_p=0A= +;; niter _87 > 0 ? (unsigned int) _87 + 4294967295 : 0=0A= +;; upper_bound 2147483645=0A= +;; likely_upper_bound 2147483645=0A= +;; iterations by profile: 7.090909 (unreliable, maybe flat) entry count:1= 18111600 (estimated locally, freq 65.4628)=0A= +;; nodes: 8 13=0A= +Processing loop 3 at fp_foo.c:3=0A= + single exit 8 -> 9, exit condition if (i_40 < _87)=0A= +=0A= +=0A= +=0A= +Loops in function: dgefa=0A= +loop_0 (header =3D 0, latch =3D 1)=0A= +{=0A= + bb_2 (preds =3D {bb_0 }, succs =3D {bb_10 bb_14 })=0A= + {=0A= + [local count: 1804255]:=0A= + _45 =3D n_23(D) + -1;=0A= + if (n_23(D) > 1)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_14 (preds =3D {bb_2 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 198468]:=0A= +=0A= + }=0A= + bb_3 (preds =3D {bb_14 bb_16 }, succs =3D {bb_1 })=0A= + {=0A= + [local count: 1804255]:=0A= + # .MEM_88 =3D PHI <.MEM_22(D)(14), .MEM_53(16)>=0A= + # VUSE <.MEM_88>=0A= + return;=0A= +=0A= + }=0A= + bb_10 (preds =3D {bb_2 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_16 (preds =3D {bb_5 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 1605787]:=0A= + # .MEM_53 =3D PHI <.MEM_89(5)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_1 (header =3D 4, latch =3D 11, finite_p=0A= + niter (unsigned int) n_23(D) + 4294967294=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:160= 5787 (estimated locally, freq 0.8900))=0A= + {=0A= + bb_4 (preds =3D {bb_11 bb_10 }, succs =3D {bb_6 bb_15 })=0A= + {=0A= + [local count: 14598063]:=0A= + # i_50 =3D PHI =0A= + # .MEM_54 =3D PHI <.MEM_89(11), .MEM_22(D)(10)>=0A= + j_24 =3D i_50 + 1;=0A= + if (n_23(D) > j_24)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_15 (preds =3D {bb_4 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_5 (preds =3D {bb_15 bb_17 }, succs =3D {bb_11 bb_16 })=0A= + {=0A= + [local count: 14598063]:=0A= + # .MEM_89 =3D PHI <.MEM_54(15), .MEM_86(17)>=0A= + if (j_24 < _45)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_11 (preds =3D {bb_5 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 12992276]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + bb_6 (preds =3D {bb_4 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 12992276]:=0A= + _6 =3D m_25(D) * i_50;=0A= + _7 =3D _6 + i_50;=0A= + _8 =3D (sizetype) _7;=0A= + _9 =3D _8 + 1;=0A= + _10 =3D _9 * 4;=0A= + _87 =3D n_23(D) - j_24;=0A= +=0A= + }=0A= + bb_17 (preds =3D {bb_9 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 12992276]:=0A= + # .MEM_86 =3D PHI <.MEM_55(9)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_2 (header =3D 7, latch =3D 12, finite_p=0A= + niter ((unsigned int) n_23(D) - (unsigned int) i_50) - 2=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 2992276 (estimated locally, freq 7.2009))=0A= + {=0A= + bb_7 (preds =3D {bb_12 bb_6 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 118111600]:=0A= + # j_51 =3D PHI =0A= + # .MEM_52 =3D PHI <.MEM_55(12), .MEM_54(6)>=0A= + _1 =3D m_25(D) * j_51;=0A= + _2 =3D _1 + l_26(D);=0A= + _3 =3D (long unsigned int) _2;=0A= + _4 =3D _3 * 4;=0A= + _5 =3D vector_27(D) + _4;=0A= + # VUSE <.MEM_52>=0A= + t_28 =3D *_5;=0A= + _11 =3D _1 + i_50;=0A= + _12 =3D (sizetype) _11;=0A= + _13 =3D _12 + 1;=0A= + _14 =3D _13 * 4;=0A= +=0A= + }=0A= + bb_9 (preds =3D {bb_8 }, succs =3D {bb_12 bb_17 })=0A= + {=0A= + [local count: 118111600]:=0A= + # .MEM_55 =3D PHI <.MEM_42(8)>=0A= + j_30 =3D j_51 + 1;=0A= + if (n_23(D) > j_30)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_12 (preds =3D {bb_9 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 105119324]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_3 (header =3D 8, latch =3D 13, finite_p=0A= + niter _87 > 0 ? (unsigned int) _87 + 4294967295 : 0=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 7.090909 (unreliable, maybe flat) entry count= :118111600 (estimated locally, freq 65.4628))=0A= + {=0A= + bb_8 (preds =3D {bb_13 bb_7 }, succs =3D {bb_13 bb_9 })=0A= + {=0A= + [local count: 955630225]:=0A= + # i_56 =3D PHI =0A= + # .MEM_57 =3D PHI <.MEM_42(13), .MEM_52(7)>=0A= + _32 =3D (long unsigned int) i_56;=0A= + _33 =3D _32 * 4;=0A= + _21 =3D _10 + _33;=0A= + _34 =3D vector_27(D) + _21;=0A= + # VUSE <.MEM_57>=0A= + _35 =3D *_34;=0A= + _29 =3D _14 + _33;=0A= + _36 =3D vector_27(D) + _29;=0A= + # VUSE <.MEM_57>=0A= + _37 =3D *_36;=0A= + _38 =3D t_28 * _37;=0A= + _39 =3D _35 + _38;=0A= + # .MEM_42 =3D VDEF <.MEM_57>=0A= + *_34 =3D _39;=0A= + i_40 =3D i_56 + 1;=0A= + if (i_40 < _87)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_13 (preds =3D {bb_8 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 850510901]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + }=0A= + }=0A= + }=0A= +}=0A= +Analyzing # of iterations of loop 3=0A= + exit condition [1, + , 1](no_overflow) < _87=0A= + bounds on difference of bases: -2147483649 ... 2147483646=0A= + result:=0A= + zero if _87 <=3D 0=0A= + # of iterations (unsigned int) _87 + 4294967295, bounded by 2147483646= =0A= + number of iterations (unsigned int) _87 + 4294967295; zero if _87 <=3D 0= =0A= +=0A= +:=0A= +IV struct:=0A= + SSA_NAME: _21=0A= + Type: sizetype=0A= + Base: ((sizetype) _7 + 1) * 4=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _29=0A= + Type: sizetype=0A= + Base: ((sizetype) _11 + 1) * 4=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _32=0A= + Type: long unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _33=0A= + Type: long unsigned int=0A= + Base: 0=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _34=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) _7 + 1) * 4=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _36=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) _11 + 1) * 4=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: i_40=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: i_56=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +:=0A= +Group 0:=0A= + Type: REFERENCE ADDRESS=0A= + Use 0.0:=0A= + At stmt: _35 =3D *_34;=0A= + At pos: *_34=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) _7 + 1) * 4=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= + Use 0.1:=0A= + At stmt: *_34 =3D _39;=0A= + At pos: *_34=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) _7 + 1) * 4=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 1:=0A= + Type: REFERENCE ADDRESS=0A= + Use 1.0:=0A= + At stmt: _37 =3D *_36;=0A= + At pos: *_36=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) _11 + 1) * 4=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 2:=0A= + Type: COMPARE=0A= + Use 2.0:=0A= + At stmt: if (i_40 < _87)=0A= + At pos: i_40=0A= + IV struct:=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +Predict doloop failure due to target specific checks.=0A= +Candidate 0:=0A= + Var befor: ivtmp.20=0A= + Var after: ivtmp.20=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 1:=0A= + Var befor: ivtmp.21=0A= + Var after: ivtmp.21=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 2:=0A= + Var befor: ivtmp.22=0A= + Var after: ivtmp.22=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 3:=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Var befor: ivtmp.23=0A= + Var after: ivtmp.23=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + ((sizetype) _7 + 1) * 4)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Var befor: ivtmp.24=0A= + Var after: ivtmp.24=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) ((sizetype) _7 * 4) + (unsigned long) vector_27(= D)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 6:=0A= + Var befor: ivtmp.25=0A= + Var after: ivtmp.25=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + ((sizetype) _11 + 1) * 4)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 7:=0A= + Var befor: ivtmp.26=0A= + Var after: ivtmp.26=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) ((sizetype) _11 * 4) + (unsigned long) vector_27= (D)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 8:=0A= + Var befor: ivtmp.27=0A= + Var after: ivtmp.27=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 9:=0A= + Var befor: ivtmp.28=0A= + Var after: ivtmp.28=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +: 0, 1, 2, 3,=0A= +=0A= + Related:=0A= + Group 0: 0, 1, 2, 3, 4, 5, 9=0A= + Group 1: 0, 1, 2, 3, 6, 7, 9=0A= + Group 2: 0, 1, 2, 3, 8=0A= +=0A= +:=0A= + cand cost=0A= + 0 5=0A= + 1 5=0A= + 2 5=0A= + 3 4=0A= + 4 6=0A= + 5 6=0A= + 6 6=0A= + 7 6=0A= + 8 5=0A= + 9 5=0A= +=0A= +=0A= +:=0A= +Inv 6: _7 (eliminable)=0A= +Inv 1: _10 (eliminable)=0A= +Inv 7: _11 (eliminable)=0A= +Inv 3: _14 (eliminable)=0A= +Inv 2: vector_27(D) (eliminable)=0A= +Inv 4: t_28 (eliminable)=0A= +Inv 5: _87 (eliminable)=0A= +=0A= +:=0A= +inv_expr 1: (unsigned long) _7 * 4 + (unsigned long) vector_27(D)=0A= +inv_expr 2: ((unsigned long) _7 - (unsigned long) _11) * 4=0A= +inv_expr 3: (unsigned long) _11 * 18446744073709551612 + (unsigned long) = _7 * 4=0A= +inv_expr 4: (unsigned long) _11 * 4 + (unsigned long) vector_27(D)=0A= +inv_expr 5: ((unsigned long) _11 - (unsigned long) _7) * 4=0A= +inv_expr 6: (unsigned long) _7 * 18446744073709551612 + (unsigned long) _= 11 * 4=0A= +=0A= +:=0A= +Group 0:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 22 4 1; NIL;=0A= + 2 22 2 1; NIL;=0A= + 4 2 0 NIL; NIL;=0A= + 5 2 2 NIL; NIL;=0A= + 6 16 2 2; NIL;=0A= + 7 16 4 3; NIL;=0A= + 9 14 4 1; NIL;=0A= +=0A= +Group 1:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 11 2 4; NIL;=0A= + 2 11 1 4; NIL;=0A= + 4 8 1 5; NIL;=0A= + 5 8 2 6; NIL;=0A= + 6 1 0 NIL; NIL;=0A= + 7 1 1 NIL; NIL;=0A= + 9 7 2 4; NIL;=0A= +=0A= +Group 2:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 0 0 NIL; 5=0A= + 1 0 0 NIL; 5=0A= + 2 4 0 NIL; 5=0A= + 3 0 0 NIL; 5=0A= + 8 4 0 NIL; 5=0A= +=0A= +=0A= +:=0A= + target_avail_regs 26=0A= + target_clobbered_regs 16=0A= + target_reg_cost 4=0A= + target_spill_cost 24=0A= + regs_used 0=0A= + cost for size:=0A= + ivs cost=0A= + 0 0=0A= + 1 2=0A= + 2 4=0A= + 3 6=0A= + 4 8=0A= + 5 10=0A= + 6 12=0A= + 7 14=0A= + 8 16=0A= + 9 18=0A= + 10 20=0A= + 11 22=0A= + 12 24=0A= + 13 26=0A= + 14 28=0A= + 15 30=0A= + 16 32=0A= + 17 34=0A= + 18 36=0A= + 19 38=0A= + 20 40=0A= + 21 42=0A= + 22 44=0A= + 23 115=0A= + 24 120=0A= + 25 125=0A= + 26 130=0A= + 27 179=0A= + 28 228=0A= + 29 277=0A= + 30 326=0A= + 31 375=0A= + 32 424=0A= + 33 473=0A= + 34 522=0A= + 35 571=0A= + 36 620=0A= + 37 669=0A= + 38 718=0A= + 39 767=0A= + 40 816=0A= + 41 865=0A= + 42 914=0A= + 43 963=0A= + 44 1012=0A= + 45 1061=0A= + 46 1110=0A= + 47 1159=0A= + 48 1208=0A= + 49 1257=0A= + 50 1306=0A= + 51 1355=0A= + 52 1404=0A= +=0A= +Initial set of candidates:=0A= + cost: 47 (complexity 3)=0A= + reg_cost: 5=0A= + cand_cost: 5=0A= + cand_group_cost: 37 (complexity 3)=0A= + candidates: 2=0A= + group:0 --> iv_cand:2, cost=3D(22,2)=0A= + group:1 --> iv_cand:2, cost=3D(11,1)=0A= + group:2 --> iv_cand:2, cost=3D(4,0)=0A= + invariant variables: 5=0A= + invariant expressions: 1, 4=0A= +=0A= +Improved to:=0A= + cost: 31 (complexity 1)=0A= + reg_cost: 6=0A= + cand_cost: 11=0A= + cand_group_cost: 14 (complexity 1)=0A= + candidates: 2, 4=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:4, cost=3D(8,1)=0A= + group:2 --> iv_cand:2, cost=3D(4,0)=0A= + invariant variables: 5=0A= + invariant expressions: 5=0A= +=0A= +Improved to:=0A= + cost: 26 (complexity 1)=0A= + reg_cost: 6=0A= + cand_cost: 10=0A= + cand_group_cost: 10 (complexity 1)=0A= + candidates: 3, 4=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:4, cost=3D(8,1)=0A= + group:2 --> iv_cand:3, cost=3D(0,0)=0A= + invariant variables: 5=0A= + invariant expressions: 5=0A= +=0A= +Improved to:=0A= + cost: 26 (complexity 0)=0A= + reg_cost: 7=0A= + cand_cost: 16=0A= + cand_group_cost: 3 (complexity 0)=0A= + candidates: 3, 4, 6=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:6, cost=3D(1,0)=0A= + group:2 --> iv_cand:3, cost=3D(0,0)=0A= + invariant variables: 5=0A= + invariant expressions: =0A= +=0A= +Initial set of candidates:=0A= + cost: 37 (complexity 6)=0A= + reg_cost: 7=0A= + cand_cost: 9=0A= + cand_group_cost: 21 (complexity 6)=0A= + candidates: 3, 9=0A= + group:0 --> iv_cand:9, cost=3D(14,4)=0A= + group:1 --> iv_cand:9, cost=3D(7,2)=0A= + group:2 --> iv_cand:3, cost=3D(0,0)=0A= + invariant variables: 5=0A= + invariant expressions: 1, 4=0A= +=0A= +Improved to:=0A= + cost: 26 (complexity 1)=0A= + reg_cost: 6=0A= + cand_cost: 10=0A= + cand_group_cost: 10 (complexity 1)=0A= + candidates: 3, 4=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:4, cost=3D(8,1)=0A= + group:2 --> iv_cand:3, cost=3D(0,0)=0A= + invariant variables: 5=0A= + invariant expressions: 5=0A= +=0A= +Improved to:=0A= + cost: 26 (complexity 0)=0A= + reg_cost: 7=0A= + cand_cost: 16=0A= + cand_group_cost: 3 (complexity 0)=0A= + candidates: 3, 4, 6=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:6, cost=3D(1,0)=0A= + group:2 --> iv_cand:3, cost=3D(0,0)=0A= + invariant variables: 5=0A= + invariant expressions: =0A= +=0A= +Original cost 26 (complexity 0)=0A= +=0A= +Final cost 26 (complexity 0)=0A= +=0A= +Selected IV set for loop 3 at fp_foo.c:3, 10 avg niters, 3 IVs:=0A= +Candidate 3:=0A= + Var befor: i_56=0A= + Var after: i_40=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Var befor: ivtmp.23_85=0A= + Var after: ivtmp.23_84=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + ((sizetype) _7 + 1) * 4)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 6:=0A= + Var befor: ivtmp.25_78=0A= + Var after: ivtmp.25_77=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + ((sizetype) _11 + 1) * 4)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +;;=0A= +;; Loop 2=0A= +;; header 7, latch 12=0A= +;; depth 2, outer 1, finite_p=0A= +;; niter ((unsigned int) n_23(D) - (unsigned int) i_50) - 2=0A= +;; upper_bound 2147483645=0A= +;; likely_upper_bound 2147483645=0A= +;; iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 2992276 (estimated locally, freq 7.2009)=0A= +;; nodes: 7 12 9 8 13=0A= +Processing loop 2 at fp_foo.c:9=0A= + single exit 9 -> 17, exit condition if (n_23(D) > j_30)=0A= +=0A= +=0A= +=0A= +Loops in function: dgefa=0A= +loop_0 (header =3D 0, latch =3D 1)=0A= +{=0A= + bb_2 (preds =3D {bb_0 }, succs =3D {bb_10 bb_14 })=0A= + {=0A= + [local count: 1804255]:=0A= + _45 =3D n_23(D) + -1;=0A= + if (n_23(D) > 1)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_14 (preds =3D {bb_2 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 198468]:=0A= +=0A= + }=0A= + bb_3 (preds =3D {bb_14 bb_16 }, succs =3D {bb_1 })=0A= + {=0A= + [local count: 1804255]:=0A= + # .MEM_88 =3D PHI <.MEM_22(D)(14), .MEM_53(16)>=0A= + # VUSE <.MEM_88>=0A= + return;=0A= +=0A= + }=0A= + bb_10 (preds =3D {bb_2 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_16 (preds =3D {bb_5 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 1605787]:=0A= + # .MEM_53 =3D PHI <.MEM_89(5)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_1 (header =3D 4, latch =3D 11, finite_p=0A= + niter (unsigned int) n_23(D) + 4294967294=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:160= 5787 (estimated locally, freq 0.8900))=0A= + {=0A= + bb_4 (preds =3D {bb_11 bb_10 }, succs =3D {bb_6 bb_15 })=0A= + {=0A= + [local count: 14598063]:=0A= + # i_50 =3D PHI =0A= + # .MEM_54 =3D PHI <.MEM_89(11), .MEM_22(D)(10)>=0A= + j_24 =3D i_50 + 1;=0A= + if (n_23(D) > j_24)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_15 (preds =3D {bb_4 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_5 (preds =3D {bb_15 bb_17 }, succs =3D {bb_11 bb_16 })=0A= + {=0A= + [local count: 14598063]:=0A= + # .MEM_89 =3D PHI <.MEM_54(15), .MEM_86(17)>=0A= + if (j_24 < _45)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_11 (preds =3D {bb_5 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 12992276]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + bb_6 (preds =3D {bb_4 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 12992276]:=0A= + _6 =3D m_25(D) * i_50;=0A= + _7 =3D _6 + i_50;=0A= + _8 =3D (sizetype) _7;=0A= + _9 =3D _8 + 1;=0A= + _10 =3D _9 * 4;=0A= + _87 =3D n_23(D) - j_24;=0A= +=0A= + }=0A= + bb_17 (preds =3D {bb_9 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 12992276]:=0A= + # .MEM_86 =3D PHI <.MEM_55(9)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_2 (header =3D 7, latch =3D 12, finite_p=0A= + niter ((unsigned int) n_23(D) - (unsigned int) i_50) - 2=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 2992276 (estimated locally, freq 7.2009))=0A= + {=0A= + bb_7 (preds =3D {bb_12 bb_6 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 118111600]:=0A= + # j_51 =3D PHI =0A= + # .MEM_52 =3D PHI <.MEM_55(12), .MEM_54(6)>=0A= + _1 =3D m_25(D) * j_51;=0A= + _2 =3D _1 + l_26(D);=0A= + _3 =3D (long unsigned int) _2;=0A= + _4 =3D _3 * 4;=0A= + _5 =3D vector_27(D) + _4;=0A= + # VUSE <.MEM_52>=0A= + t_28 =3D *_5;=0A= + _11 =3D _1 + i_50;=0A= + _12 =3D (sizetype) _11;=0A= + _13 =3D _12 + 1;=0A= + _14 =3D _13 * 4;=0A= + _82 =3D (sizetype) _7;=0A= + _81 =3D _82 + 1;=0A= + _80 =3D _81 * 4;=0A= + _79 =3D vector_27(D) + _80;=0A= + ivtmp.23_83 =3D (unsigned long) _79;=0A= + _75 =3D (sizetype) _11;=0A= + _74 =3D _75 + 1;=0A= + _73 =3D _74 * 4;=0A= + _72 =3D vector_27(D) + _73;=0A= + ivtmp.25_76 =3D (unsigned long) _72;=0A= +=0A= + }=0A= + bb_9 (preds =3D {bb_8 }, succs =3D {bb_12 bb_17 })=0A= + {=0A= + [local count: 118111600]:=0A= + # .MEM_55 =3D PHI <.MEM_42(8)>=0A= + j_30 =3D j_51 + 1;=0A= + if (n_23(D) > j_30)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_12 (preds =3D {bb_9 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 105119324]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_3 (header =3D 8, latch =3D 13, finite_p=0A= + niter _87 > 0 ? (unsigned int) _87 + 4294967295 : 0=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 7.090909 (unreliable, maybe flat) entry count= :118111600 (estimated locally, freq 65.4628))=0A= + {=0A= + bb_8 (preds =3D {bb_13 bb_7 }, succs =3D {bb_13 bb_9 })=0A= + {=0A= + [local count: 955630225]:=0A= + # i_56 =3D PHI =0A= + # .MEM_57 =3D PHI <.MEM_42(13), .MEM_52(7)>=0A= + # ivtmp.23_85 =3D PHI =0A= + # ivtmp.25_78 =3D PHI =0A= + _32 =3D (long unsigned int) i_56;=0A= + _33 =3D _32 * 4;=0A= + _21 =3D _10 + _33;=0A= + _34 =3D vector_27(D) + _21;=0A= + _71 =3D (void *) ivtmp.23_85;=0A= + # VUSE <.MEM_57>=0A= + _35 =3D MEM[(float *)_71];=0A= + _29 =3D _14 + _33;=0A= + _36 =3D vector_27(D) + _29;=0A= + _69 =3D (void *) ivtmp.25_78;=0A= + # VUSE <.MEM_57>=0A= + _37 =3D MEM[(float *)_69];=0A= + _38 =3D t_28 * _37;=0A= + _39 =3D _35 + _38;=0A= + _70 =3D (void *) ivtmp.23_85;=0A= + # .MEM_42 =3D VDEF <.MEM_57>=0A= + MEM[(float *)_70] =3D _39;=0A= + i_40 =3D i_56 + 1;=0A= + ivtmp.23_84 =3D ivtmp.23_85 + 4;=0A= + ivtmp.25_77 =3D ivtmp.25_78 + 4;=0A= + if (i_40 < _87)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_13 (preds =3D {bb_8 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 850510901]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + }=0A= + }=0A= + }=0A= +}=0A= +Analyzing # of iterations of loop 2=0A= + exit condition [i_50 + 2, + , 1](no_overflow) < n_23(D)=0A= + bounds on difference of bases: 0 ... 2147483645=0A= + result:=0A= + # of iterations ((unsigned int) n_23(D) - (unsigned int) i_50) - 2, bo= unded by 2147483645=0A= + number of iterations ((unsigned int) n_23(D) - (unsigned int) i_50) - 2= =0A= +=0A= +:=0A= +IV struct:=0A= + SSA_NAME: _1=0A= + Type: int=0A= + Base: (i_50 + 1) * m_25(D)=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _2=0A= + Type: int=0A= + Base: (i_50 + 1) * m_25(D) + l_26(D)=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _3=0A= + Type: long unsigned int=0A= + Base: (long unsigned int) ((i_50 + 1) * m_25(D)) + (long unsigned int) l= _26(D)=0A= + Step: (long unsigned int) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _4=0A= + Type: long unsigned int=0A= + Base: ((long unsigned int) ((i_50 + 1) * m_25(D)) + (long unsigned int) = l_26(D)) * 4=0A= + Step: (long unsigned int) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _5=0A= + Type: float *=0A= + Base: vector_27(D) + ((long unsigned int) ((i_50 + 1) * m_25(D)) + (long= unsigned int) l_26(D)) * 4=0A= + Step: (long unsigned int) m_25(D) * 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _11=0A= + Type: int=0A= + Base: (i_50 + 1) * m_25(D) + i_50=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _12=0A= + Type: sizetype=0A= + Base: (sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50=0A= + Step: (sizetype) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _13=0A= + Type: sizetype=0A= + Base: ((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1=0A= + Step: (sizetype) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _14=0A= + Type: sizetype=0A= + Base: (((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1) * 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: j_30=0A= + Type: int=0A= + Base: i_50 + 2=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: j_51=0A= + Type: int=0A= + Base: i_50 + 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _72=0A= + Type: float *=0A= + Base: vector_27(D) + (((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_= 50) + 1) * 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _73=0A= + Type: sizetype=0A= + Base: (((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1) * 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _74=0A= + Type: sizetype=0A= + Base: ((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1=0A= + Step: (sizetype) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _75=0A= + Type: sizetype=0A= + Base: (sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50=0A= + Step: (sizetype) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: ivtmp.25_76=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + (((sizetype) ((i_50 + 1) * m_25(D)= ) + (sizetype) i_50) + 1) * 4)=0A= + Step: (sizetype) m_25(D) * 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +:=0A= +Group 0:=0A= + Type: REFERENCE ADDRESS=0A= + Use 0.0:=0A= + At stmt: t_28 =3D *_5;=0A= + At pos: *_5=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector_27(D) + ((long unsigned int) ((i_50 + 1) * m_25(D)) + (= long unsigned int) l_26(D)) * 4=0A= + Step: (long unsigned int) m_25(D) * 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 1:=0A= + Type: COMPARE=0A= + Use 1.0:=0A= + At stmt: if (n_23(D) > j_30)=0A= + At pos: j_30=0A= + IV struct:=0A= + Type: int=0A= + Base: i_50 + 2=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 2:=0A= + Type: GENERIC=0A= + Use 2.0:=0A= + At stmt: ivtmp.25_76 =3D (unsigned long) _72;=0A= + At pos: =0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + (((sizetype) ((i_50 + 1) * m_2= 5(D)) + (sizetype) i_50) + 1) * 4)=0A= + Step: (sizetype) m_25(D) * 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 3:=0A= + Type: GENERIC=0A= + Use 3.0:=0A= + At stmt: _14 =3D _13 * 4;=0A= + At pos: =0A= + IV struct:=0A= + Type: sizetype=0A= + Base: (((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1) * = 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +Predict doloop failure due to target specific checks.=0A= +Candidate 0:=0A= + Var befor: ivtmp.29=0A= + Var after: ivtmp.29=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 1:=0A= + Var befor: ivtmp.30=0A= + Var after: ivtmp.30=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 2:=0A= + Var befor: ivtmp.31=0A= + Var after: ivtmp.31=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: (sizetype) (i_50 + 2)=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 3:=0A= + Var befor: ivtmp.32=0A= + Var after: ivtmp.32=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: (sizetype) (i_50 + 1)=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: i_50 + 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.33=0A= + Var after: ivtmp.33=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + ((long unsigned int) ((i_50 + 1)= * m_25(D)) + (long unsigned int) l_26(D)) * 4)=0A= + Step: (unsigned long) ((long unsigned int) m_25(D) * 4)=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 6:=0A= + Var befor: ivtmp.34=0A= + Var after: ivtmp.34=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) (i_50 + 2)=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 7:=0A= + Var befor: ivtmp.35=0A= + Var after: ivtmp.35=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) i_50=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 8:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.36=0A= + Var after: ivtmp.36=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + (((sizetype) ((i_50 + 1) * m_25(= D)) + (sizetype) i_50) + 1) * 4)=0A= + Step: (sizetype) m_25(D) * 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 9:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.37=0A= + Var after: ivtmp.37=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype)= i_50) * 4) + (unsigned long) vector_27(D)=0A= + Step: (sizetype) m_25(D) * 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 10:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.38=0A= + Var after: ivtmp.38=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: (((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1) * 4= =0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 11:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.39=0A= + Var after: ivtmp.39=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: ((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) * 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 12:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.40=0A= + Var after: ivtmp.40=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: (long unsigned int) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +: 0, 1, 2, 3, 4,=0A= +=0A= + Related:=0A= + Group 0: 0, 1, 2, 3, 4, 5, 12=0A= + Group 1: 0, 1, 2, 3, 4, 6, 7=0A= + Group 2: 0, 1, 2, 3, 4, 8, 9, 10, 11, 12=0A= + Group 3: 0, 1, 2, 3, 4, 10, 11, 12=0A= +=0A= +:=0A= + cand cost=0A= + 0 5=0A= + 1 5=0A= + 2 6=0A= + 3 6=0A= + 4 4=0A= + 5 9=0A= + 6 5=0A= + 7 5=0A= + 8 10=0A= + 9 9=0A= + 10 10=0A= + 11 9=0A= + 12 5=0A= +=0A= +=0A= +:=0A= +Inv 6: _7=0A= +Inv 8: _10=0A= +Inv 7: n_23(D) (eliminable)=0A= +Inv 1: j_24 (eliminable)=0A= +Inv 2: m_25(D) (eliminable)=0A= +Inv 3: l_26(D) (eliminable)=0A= +Inv 4: vector_27(D)=0A= +Inv 5: i_50 (eliminable)=0A= +Inv 9: _87=0A= +=0A= +:=0A= +inv_expr 1: (long unsigned int) m_25(D) * 4=0A= +inv_expr 2: ((unsigned long) l_26(D) - (unsigned long) i_50) * 4=0A= +inv_expr 3: (unsigned long) i_50 * 18446744073709551612 + (unsigned long)= l_26(D) * 4=0A= +inv_expr 4: ((unsigned long) l_26(D) * 4 + (unsigned long) vector_27(D)) = - (unsigned long) i_50 * 4=0A= +inv_expr 5: ((unsigned long) ((i_50 + 1) * m_25(D)) + (unsigned long) l_2= 6(D)) * 4 + (unsigned long) vector_27(D)=0A= +inv_expr 6: ((unsigned int) n_23(D) - (unsigned int) i_50) + 4294967295= =0A= +inv_expr 7: (signed int) i_50 + 1=0A= +inv_expr 8: (unsigned long) (((unsigned int) n_23(D) - (unsigned int) i_5= 0) + 4294967294) + 1=0A= +inv_expr 9: ((sizetype) i_50 + (sizetype) (((unsigned int) n_23(D) - (uns= igned int) i_50) + 4294967294)) + 3=0A= +inv_expr 10: ((sizetype) i_50 + (sizetype) (((unsigned int) n_23(D) - (un= signed int) i_50) + 4294967294)) + 2=0A= +inv_expr 11: (((signed long) i_50 - (signed long) l_26(D)) + 1) * 4=0A= +inv_expr 12: (signed long) vector_27(D) + 4=0A= +inv_expr 13: (((signed long) ((i_50 + 1) * m_25(D)) * 4 + (signed long) v= ector_27(D)) + (signed long) i_50 * 4) + 4=0A= +inv_expr 14: (((signed long) i_50 * 4 - (signed long) vector_27(D)) - (si= gned long) l_26(D) * 4) + 4=0A= +inv_expr 15: 4 - (signed long) vector_27(D)=0A= +inv_expr 16: (((signed long) ((i_50 + 1) * m_25(D)) + (signed long) i_50)= + 1) * 4=0A= +=0A= +:=0A= +Group 0:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 5 1 0 NIL; NIL;=0A= + 8 8 2 2; NIL;=0A= + 9 8 1 3; NIL;=0A= + 10 8 2 4; NIL;=0A= + 11 8 1 4; NIL;=0A= + 12 10 1 5; NIL;=0A= +=0A= +Group 1:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 0 0 6; NIL;=0A= + 1 2 0 8; NIL;=0A= + 2 3 0 9; NIL;=0A= + 3 0 0 NIL; 7=0A= + 4 0 0 NIL; 7=0A= + 6 0 0 NIL; 7=0A= + 7 0 0 NIL; 7=0A= +=0A= +Group 2:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 5 6 0 11; NIL;=0A= + 8 0 0 NIL; NIL;=0A= + 9 4 0 NIL; NIL;=0A= + 10 4 0 NIL; NIL;=0A= + 11 4 0 12; NIL;=0A= + 12 9 0 13; NIL;=0A= +=0A= +Group 3:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 5 7 0 14; NIL;=0A= + 8 8 0 NIL; NIL;=0A= + 9 4 0 15; NIL;=0A= + 10 0 0 NIL; NIL;=0A= + 11 4 0 NIL; NIL;=0A= + 12 9 0 16; NIL;=0A= +=0A= +=0A= +:=0A= + target_avail_regs 26=0A= + target_clobbered_regs 16=0A= + target_reg_cost 4=0A= + target_spill_cost 24=0A= + regs_used 4=0A= + cost for size:=0A= + ivs cost=0A= + 0 0=0A= + 1 2=0A= + 2 4=0A= + 3 6=0A= + 4 8=0A= + 5 10=0A= + 6 12=0A= + 7 14=0A= + 8 16=0A= + 9 18=0A= + 10 20=0A= + 11 22=0A= + 12 24=0A= + 13 26=0A= + 14 28=0A= + 15 30=0A= + 16 32=0A= + 17 34=0A= + 18 36=0A= + 19 111=0A= + 20 116=0A= + 21 121=0A= + 22 126=0A= + 23 151=0A= + 24 176=0A= + 25 201=0A= + 26 226=0A= + 27 275=0A= + 28 324=0A= + 29 373=0A= + 30 422=0A= + 31 471=0A= + 32 520=0A= + 33 569=0A= + 34 618=0A= + 35 667=0A= + 36 716=0A= + 37 765=0A= + 38 814=0A= + 39 863=0A= + 40 912=0A= + 41 961=0A= + 42 1010=0A= + 43 1059=0A= + 44 1108=0A= + 45 1157=0A= + 46 1206=0A= + 47 1255=0A= + 48 1304=0A= + 49 1353=0A= + 50 1402=0A= + 51 1451=0A= + 52 1500=0A= +=0A= +Initial set of candidates:=0A= + cost: 35 (complexity 0)=0A= + reg_cost: 8=0A= + cand_cost: 13=0A= + cand_group_cost: 14 (complexity 0)=0A= + candidates: 4, 5=0A= + group:0 --> iv_cand:5, cost=3D(1,0)=0A= + group:1 --> iv_cand:4, cost=3D(0,0)=0A= + group:2 --> iv_cand:5, cost=3D(6,0)=0A= + group:3 --> iv_cand:5, cost=3D(7,0)=0A= + invariant variables: 7=0A= + invariant expressions: 1, 11, 14=0A= +=0A= +Improved to:=0A= + cost: 33 (complexity 2)=0A= + reg_cost: 7=0A= + cand_cost: 14=0A= + cand_group_cost: 12 (complexity 2)=0A= + candidates: 4, 10=0A= + group:0 --> iv_cand:10, cost=3D(8,2)=0A= + group:1 --> iv_cand:4, cost=3D(0,0)=0A= + group:2 --> iv_cand:10, cost=3D(4,0)=0A= + group:3 --> iv_cand:10, cost=3D(0,0)=0A= + invariant variables: 7=0A= + invariant expressions: 1, 4=0A= +=0A= +Initial set of candidates:=0A= + cost: 33 (complexity 2)=0A= + reg_cost: 7=0A= + cand_cost: 14=0A= + cand_group_cost: 12 (complexity 2)=0A= + candidates: 4, 10=0A= + group:0 --> iv_cand:10, cost=3D(8,2)=0A= + group:1 --> iv_cand:4, cost=3D(0,0)=0A= + group:2 --> iv_cand:10, cost=3D(4,0)=0A= + group:3 --> iv_cand:10, cost=3D(0,0)=0A= + invariant variables: 7=0A= + invariant expressions: 1, 4=0A= +=0A= +Original cost 33 (complexity 2)=0A= +=0A= +Final cost 33 (complexity 2)=0A= +=0A= +Selected IV set for loop 2 at fp_foo.c:9, 10 avg niters, 2 IVs:=0A= +Candidate 4:=0A= + Var befor: j_51=0A= + Var after: j_30=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: i_50 + 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 10:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.38_68=0A= + Var after: ivtmp.38_67=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: (((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1) * 4= =0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +Replacing exit test: if (n_23(D) > j_30)=0A= +;;=0A= +;; Loop 1=0A= +;; header 4, latch 11=0A= +;; depth 1, outer 0, finite_p=0A= +;; niter (unsigned int) n_23(D) + 4294967294=0A= +;; upper_bound 2147483645=0A= +;; likely_upper_bound 2147483645=0A= +;; iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 605787 (estimated locally, freq 0.8900)=0A= +;; nodes: 4 11 5 15 17 9 8 13 7 12 6=0A= +Processing loop 1 at fp_foo.c:8=0A= + single exit 5 -> 16, exit condition if (j_24 < _45)=0A= +=0A= +=0A= +=0A= +Loops in function: dgefa=0A= +loop_0 (header =3D 0, latch =3D 1)=0A= +{=0A= + bb_2 (preds =3D {bb_0 }, succs =3D {bb_10 bb_14 })=0A= + {=0A= + [local count: 1804255]:=0A= + _45 =3D n_23(D) + -1;=0A= + if (n_23(D) > 1)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_14 (preds =3D {bb_2 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 198468]:=0A= +=0A= + }=0A= + bb_3 (preds =3D {bb_14 bb_16 }, succs =3D {bb_1 })=0A= + {=0A= + [local count: 1804255]:=0A= + # .MEM_88 =3D PHI <.MEM_22(D)(14), .MEM_53(16)>=0A= + # VUSE <.MEM_88>=0A= + return;=0A= +=0A= + }=0A= + bb_10 (preds =3D {bb_2 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_16 (preds =3D {bb_5 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 1605787]:=0A= + # .MEM_53 =3D PHI <.MEM_89(5)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_1 (header =3D 4, latch =3D 11, finite_p=0A= + niter (unsigned int) n_23(D) + 4294967294=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:160= 5787 (estimated locally, freq 0.8900))=0A= + {=0A= + bb_4 (preds =3D {bb_11 bb_10 }, succs =3D {bb_6 bb_15 })=0A= + {=0A= + [local count: 14598063]:=0A= + # i_50 =3D PHI =0A= + # .MEM_54 =3D PHI <.MEM_89(11), .MEM_22(D)(10)>=0A= + j_24 =3D i_50 + 1;=0A= + if (n_23(D) > j_24)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_15 (preds =3D {bb_4 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_5 (preds =3D {bb_15 bb_17 }, succs =3D {bb_11 bb_16 })=0A= + {=0A= + [local count: 14598063]:=0A= + # .MEM_89 =3D PHI <.MEM_54(15), .MEM_86(17)>=0A= + if (j_24 < _45)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_11 (preds =3D {bb_5 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 12992276]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + bb_6 (preds =3D {bb_4 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 12992276]:=0A= + _6 =3D m_25(D) * i_50;=0A= + _7 =3D _6 + i_50;=0A= + _8 =3D (sizetype) _7;=0A= + _9 =3D _8 + 1;=0A= + _10 =3D _9 * 4;=0A= + _87 =3D n_23(D) - j_24;=0A= + _66 =3D (sizetype) m_25(D);=0A= + _65 =3D _66 * 4;=0A= + _63 =3D i_50 + 1;=0A= + _62 =3D m_25(D) * _63;=0A= + _61 =3D (sizetype) _62;=0A= + _60 =3D (sizetype) i_50;=0A= + _59 =3D _60 + _61;=0A= + _58 =3D _59 + 1;=0A= + ivtmp.38_64 =3D _58 * 4;=0A= +=0A= + }=0A= + bb_17 (preds =3D {bb_9 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 12992276]:=0A= + # .MEM_86 =3D PHI <.MEM_55(9)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_2 (header =3D 7, latch =3D 12, finite_p=0A= + niter ((unsigned int) n_23(D) - (unsigned int) i_50) - 2=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 2992276 (estimated locally, freq 7.2009))=0A= + {=0A= + bb_7 (preds =3D {bb_12 bb_6 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 118111600]:=0A= + # j_51 =3D PHI =0A= + # .MEM_52 =3D PHI <.MEM_55(12), .MEM_54(6)>=0A= + # ivtmp.38_68 =3D PHI =0A= + _1 =3D m_25(D) * j_51;=0A= + _2 =3D _1 + l_26(D);=0A= + _3 =3D (long unsigned int) _2;=0A= + _4 =3D _3 * 4;=0A= + _5 =3D vector_27(D) + _4;=0A= + _49 =3D (sizetype) i_50;=0A= + _48 =3D _49 * 18446744073709551612;=0A= + _47 =3D (sizetype) l_26(D);=0A= + _46 =3D _47 * 4;=0A= + _44 =3D _46 + _48;=0A= + _43 =3D vector_27(D) + _44;=0A= + _41 =3D _43 + 18446744073709551612;=0A= + _31 =3D _43 + ivtmp.38_68;=0A= + # VUSE <.MEM_52>=0A= + t_28 =3D MEM[(float *)_31 + -4B];=0A= + _11 =3D _1 + i_50;=0A= + _12 =3D (sizetype) _11;=0A= + _13 =3D _12 + 1;=0A= + _14 =3D ivtmp.38_68;=0A= + _82 =3D (sizetype) _7;=0A= + _81 =3D _82 + 1;=0A= + _80 =3D _81 * 4;=0A= + _79 =3D vector_27(D) + _80;=0A= + ivtmp.23_83 =3D (unsigned long) _79;=0A= + _75 =3D (sizetype) _11;=0A= + _74 =3D _75 + 1;=0A= + _73 =3D _74 * 4;=0A= + _72 =3D vector_27(D) + _73;=0A= + _20 =3D (unsigned long) vector_27(D);=0A= + _19 =3D _20 + ivtmp.38_68;=0A= + ivtmp.25_76 =3D _19;=0A= +=0A= + }=0A= + bb_9 (preds =3D {bb_8 }, succs =3D {bb_12 bb_17 })=0A= + {=0A= + [local count: 118111600]:=0A= + # .MEM_55 =3D PHI <.MEM_42(8)>=0A= + j_30 =3D j_51 + 1;=0A= + ivtmp.38_67 =3D ivtmp.38_68 + _65;=0A= + if (j_30 !=3D n_23(D))=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_12 (preds =3D {bb_9 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 105119324]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_3 (header =3D 8, latch =3D 13, finite_p=0A= + niter _87 > 0 ? (unsigned int) _87 + 4294967295 : 0=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 7.090909 (unreliable, maybe flat) entry count= :118111600 (estimated locally, freq 65.4628))=0A= + {=0A= + bb_8 (preds =3D {bb_13 bb_7 }, succs =3D {bb_13 bb_9 })=0A= + {=0A= + [local count: 955630225]:=0A= + # i_56 =3D PHI =0A= + # .MEM_57 =3D PHI <.MEM_42(13), .MEM_52(7)>=0A= + # ivtmp.23_85 =3D PHI =0A= + # ivtmp.25_78 =3D PHI =0A= + _32 =3D (long unsigned int) i_56;=0A= + _33 =3D _32 * 4;=0A= + _21 =3D _10 + _33;=0A= + _34 =3D vector_27(D) + _21;=0A= + _71 =3D (void *) ivtmp.23_85;=0A= + # VUSE <.MEM_57>=0A= + _35 =3D MEM[(float *)_71];=0A= + _29 =3D _14 + _33;=0A= + _36 =3D vector_27(D) + _29;=0A= + _69 =3D (void *) ivtmp.25_78;=0A= + # VUSE <.MEM_57>=0A= + _37 =3D MEM[(float *)_69];=0A= + _38 =3D t_28 * _37;=0A= + _39 =3D _35 + _38;=0A= + _70 =3D (void *) ivtmp.23_85;=0A= + # .MEM_42 =3D VDEF <.MEM_57>=0A= + MEM[(float *)_70] =3D _39;=0A= + i_40 =3D i_56 + 1;=0A= + ivtmp.23_84 =3D ivtmp.23_85 + 4;=0A= + ivtmp.25_77 =3D ivtmp.25_78 + 4;=0A= + if (i_40 < _87)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_13 (preds =3D {bb_8 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 850510901]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + }=0A= + }=0A= + }=0A= +}=0A= +Analyzing # of iterations of loop 1=0A= + exit condition [1, + , 1](no_overflow) < n_23(D) + -1=0A= + bounds on difference of bases: 0 ... 2147483645=0A= + result:=0A= + # of iterations (unsigned int) n_23(D) + 4294967294, bounded by 214748= 3645=0A= + number of iterations (unsigned int) n_23(D) + 4294967294=0A= +=0A= +:=0A= +IV struct:=0A= + SSA_NAME: _6=0A= + Type: int=0A= + Base: 0=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _7=0A= + Type: int=0A= + Base: 0=0A= + Step: (int) ((unsigned int) m_25(D) + 1)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: j_24=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _41=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) l_26(D) * 4 + 18446744073709551612)=0A= + Step: 18446744073709551612=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _43=0A= + Type: float *=0A= + Base: vector_27(D) + (sizetype) l_26(D) * 4=0A= + Step: 18446744073709551612=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _44=0A= + Type: sizetype=0A= + Base: (sizetype) l_26(D) * 4=0A= + Step: 18446744073709551612=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _48=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 18446744073709551612=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _49=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: i_50=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _60=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _62=0A= + Type: int=0A= + Base: m_25(D)=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _63=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _87=0A= + Type: int=0A= + Base: n_23(D) + -1=0A= + Step: -1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +:=0A= +Group 0:=0A= + Type: COMPARE=0A= + Use 0.0:=0A= + At stmt: if (n_23(D) > j_24)=0A= + At pos: j_24=0A= + IV struct:=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 1:=0A= + Type: COMPARE=0A= + Use 1.0:=0A= + At stmt: if (j_24 < _45)=0A= + At pos: j_24=0A= + IV struct:=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 2:=0A= + Type: COMPARE=0A= + Use 2.0:=0A= + At stmt: if (i_40 < _87)=0A= + At pos: _87=0A= + IV struct:=0A= + Type: int=0A= + Base: n_23(D) + -1=0A= + Step: -1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 3:=0A= + Type: GENERIC=0A= + Use 3.0:=0A= + At stmt: j_24 =3D i_50 + 1;=0A= + At pos: =0A= + IV struct:=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 4:=0A= + Type: GENERIC=0A= + Use 4.0:=0A= + At stmt: _43 =3D vector_27(D) + _44;=0A= + At pos: =0A= + IV struct:=0A= + Type: float *=0A= + Base: vector_27(D) + (sizetype) l_26(D) * 4=0A= + Step: 18446744073709551612=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 5:=0A= + Type: GENERIC=0A= + Use 5.0:=0A= + At stmt: i_50 =3D PHI =0A= + At pos: =0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 6:=0A= + Type: GENERIC=0A= + Use 6.0:=0A= + At stmt: _7 =3D _6 + i_50;=0A= + At pos: =0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: (int) ((unsigned int) m_25(D) + 1)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 7:=0A= + Type: GENERIC=0A= + Use 7.0:=0A= + At stmt: _62 =3D m_25(D) * _63;=0A= + At pos: =0A= + IV struct:=0A= + Type: int=0A= + Base: m_25(D)=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 8:=0A= + Type: GENERIC=0A= + Use 8.0:=0A= + At stmt: _60 =3D (sizetype) i_50;=0A= + At pos: =0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +Predict doloop failure due to target specific checks.=0A= +Candidate 0:=0A= + Var befor: ivtmp.41=0A= + Var after: ivtmp.41=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 1:=0A= + Var befor: ivtmp.42=0A= + Var after: ivtmp.42=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 2:=0A= + Var befor: ivtmp.43=0A= + Var after: ivtmp.43=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 3:=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Var befor: ivtmp.44=0A= + Var after: ivtmp.44=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) (n_23(D) + -1)=0A= + Step: 4294967295=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Var befor: ivtmp.45=0A= + Var after: ivtmp.45=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) n_23(D)=0A= + Step: 4294967295=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 6:=0A= + Var befor: ivtmp.46=0A= + Var after: ivtmp.46=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + (sizetype) l_26(D) * 4)=0A= + Step: 18446744073709551612=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 7:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.47=0A= + Var after: ivtmp.47=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: (unsigned int) m_25(D) + 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 8:=0A= + Var befor: ivtmp.48=0A= + Var after: ivtmp.48=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) m_25(D)=0A= + Step: (unsigned int) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +: 0, 1, 2, 3,=0A= +=0A= + Related:=0A= + Group 0: 0, 1, 2, 3=0A= + Group 1: 0, 1, 2, 3=0A= + Group 2: 0, 1, 2, 3, 4, 5=0A= + Group 3: 0, 1, 2, 3=0A= + Group 4: 0, 1, 2, 3, 6=0A= + Group 5: 0, 1, 2, 3=0A= + Group 6: 0, 1, 2, 3, 7=0A= + Group 7: 0, 1, 2, 3, 8=0A= + Group 8: 0, 1, 2, 3=0A= +=0A= +:=0A= + cand cost=0A= + 0 5=0A= + 1 5=0A= + 2 5=0A= + 3 4=0A= + 4 5=0A= + 5 5=0A= + 6 6=0A= + 7 5=0A= + 8 5=0A= +=0A= +Scaling cost based on bb prob by 20.00: 4 (scratch: 0) -> 80=0A= +Scaling cost based on bb prob by 20.00: 4 (scratch: 0) -> 80=0A= +Scaling cost based on bb prob by 20.00: 4 (scratch: 0) -> 80=0A= +Scaling cost based on bb prob by 20.00: 4 (scratch: 0) -> 80=0A= +Scaling cost based on bb prob by 20.00: 0 (scratch: 0) -> 0=0A= +Scaling cost based on bb prob by 20.00: 4 (scratch: 0) -> 80=0A= +Scaling cost based on bb prob by 2.00: 9 (scratch: 1) -> 17=0A= +Scaling cost based on bb prob by 2.00: 0 (scratch: 0) -> 0=0A= +=0A= +:=0A= +Inv 1: n_23(D)=0A= +Inv 4: m_25(D)=0A= +Inv 5: l_26(D)=0A= +Inv 3: vector_27(D)=0A= +Inv 2: _45 (eliminable)=0A= +=0A= +:=0A= +inv_expr 1: (unsigned int) m_25(D) + 1=0A= +inv_expr 2: (signed int) n_23(D) + 1=0A= +inv_expr 3: (signed int) n_23(D) + -1=0A= +inv_expr 4: (signed long) l_26(D) * 4 + (signed long) vector_27(D)=0A= +=0A= +:=0A= +Group 0:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 4 0 NIL; NIL;=0A= + 1 4 0 NIL; NIL;=0A= + 2 0 0 NIL; NIL;=0A= + 3 0 0 NIL; NIL;=0A= + 4 4 0 NIL; NIL;=0A= + 5 4 0 2; NIL;=0A= +=0A= +Group 1:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 0 0 NIL; NIL;=0A= + 1 0 0 NIL; 2=0A= + 2 0 0 NIL; NIL;=0A= + 3 0 0 NIL; NIL;=0A= + 4 0 0 NIL; NIL;=0A= + 5 0 0 NIL; NIL;=0A= + 6 3 0 NIL; NIL;=0A= +=0A= +Group 2:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 80 0 3; NIL;=0A= + 1 80 0 3; NIL;=0A= + 2 80 0 NIL; NIL;=0A= + 3 80 0 NIL; NIL;=0A= + 4 0 0 NIL; NIL;=0A= + 5 80 0 NIL; NIL;=0A= +=0A= +Group 3:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 4 0 NIL; NIL;=0A= + 1 4 0 NIL; NIL;=0A= + 2 0 0 NIL; NIL;=0A= + 3 0 0 NIL; NIL;=0A= + 4 4 0 NIL; NIL;=0A= + 5 4 0 2; NIL;=0A= +=0A= +Group 4:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 17 0 4; NIL;=0A= + 6 0 0 NIL; NIL;=0A= +=0A= +Group 5:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 0 0 NIL; NIL;=0A= + 1 0 0 NIL; NIL;=0A= + 2 4 0 NIL; NIL;=0A= + 3 0 0 NIL; NIL;=0A= + 4 4 0 3; NIL;=0A= + 5 4 0 NIL; NIL;=0A= +=0A= +Group 6:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 7 0 0 NIL; NIL;=0A= +=0A= +Group 7:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 8 0 0 NIL; NIL;=0A= +=0A= +Group 8:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 0 0 NIL; NIL;=0A= +=0A= +=0A= +:=0A= + target_avail_regs 26=0A= + target_clobbered_regs 16=0A= + target_reg_cost 4=0A= + target_spill_cost 24=0A= + regs_used 4=0A= + cost for size:=0A= + ivs cost=0A= + 0 0=0A= + 1 2=0A= + 2 4=0A= + 3 6=0A= + 4 8=0A= + 5 10=0A= + 6 12=0A= + 7 14=0A= + 8 16=0A= + 9 18=0A= + 10 20=0A= + 11 22=0A= + 12 24=0A= + 13 26=0A= + 14 28=0A= + 15 30=0A= + 16 32=0A= + 17 34=0A= + 18 36=0A= + 19 111=0A= + 20 116=0A= + 21 121=0A= + 22 126=0A= + 23 151=0A= + 24 176=0A= + 25 201=0A= + 26 226=0A= + 27 275=0A= + 28 324=0A= + 29 373=0A= + 30 422=0A= + 31 471=0A= + 32 520=0A= + 33 569=0A= + 34 618=0A= + 35 667=0A= + 36 716=0A= + 37 765=0A= + 38 814=0A= + 39 863=0A= + 40 912=0A= + 41 961=0A= + 42 1010=0A= + 43 1059=0A= + 44 1108=0A= + 45 1157=0A= + 46 1206=0A= + 47 1255=0A= + 48 1304=0A= + 49 1353=0A= + 50 1402=0A= + 51 1451=0A= + 52 1500=0A= +=0A= +Initial set of candidates:=0A= + cost: 126 (complexity 0)=0A= + reg_cost: 10=0A= + cand_cost: 19=0A= + cand_group_cost: 97 (complexity 0)=0A= + candidates: 1, 3, 7, 8=0A= + group:0 --> iv_cand:3, cost=3D(0,0)=0A= + group:1 --> iv_cand:3, cost=3D(0,0)=0A= + group:2 --> iv_cand:3, cost=3D(80,0)=0A= + group:3 --> iv_cand:3, cost=3D(0,0)=0A= + group:4 --> iv_cand:1, cost=3D(17,0)=0A= + group:5 --> iv_cand:3, cost=3D(0,0)=0A= + group:6 --> iv_cand:7, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1, 4=0A= +=0A= +Improved to:=0A= + cost: 53 (complexity 0)=0A= + reg_cost: 12=0A= + cand_cost: 24=0A= + cand_group_cost: 17 (complexity 0)=0A= + candidates: 1, 3, 4, 7, 8=0A= + group:0 --> iv_cand:3, cost=3D(0,0)=0A= + group:1 --> iv_cand:3, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:3, cost=3D(0,0)=0A= + group:4 --> iv_cand:1, cost=3D(17,0)=0A= + group:5 --> iv_cand:3, cost=3D(0,0)=0A= + group:6 --> iv_cand:7, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1, 4=0A= +=0A= +Improved to:=0A= + cost: 43 (complexity 0)=0A= + reg_cost: 13=0A= + cand_cost: 30=0A= + cand_group_cost: 0 (complexity 0)=0A= + candidates: 1, 3, 4, 6, 7, 8=0A= + group:0 --> iv_cand:3, cost=3D(0,0)=0A= + group:1 --> iv_cand:3, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:3, cost=3D(0,0)=0A= + group:4 --> iv_cand:6, cost=3D(0,0)=0A= + group:5 --> iv_cand:3, cost=3D(0,0)=0A= + group:6 --> iv_cand:7, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1=0A= +=0A= +Initial set of candidates:=0A= + cost: 55 (complexity 0)=0A= + reg_cost: 10=0A= + cand_cost: 20=0A= + cand_group_cost: 25 (complexity 0)=0A= + candidates: 1, 4, 7, 8=0A= + group:0 --> iv_cand:4, cost=3D(4,0)=0A= + group:1 --> iv_cand:4, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:4, cost=3D(4,0)=0A= + group:4 --> iv_cand:1, cost=3D(17,0)=0A= + group:5 --> iv_cand:1, cost=3D(0,0)=0A= + group:6 --> iv_cand:7, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1, 4=0A= +=0A= +Improved to:=0A= + cost: 45 (complexity 0)=0A= + reg_cost: 11=0A= + cand_cost: 26=0A= + cand_group_cost: 8 (complexity 0)=0A= + candidates: 1, 4, 6, 7, 8=0A= + group:0 --> iv_cand:4, cost=3D(4,0)=0A= + group:1 --> iv_cand:4, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:4, cost=3D(4,0)=0A= + group:4 --> iv_cand:6, cost=3D(0,0)=0A= + group:5 --> iv_cand:1, cost=3D(0,0)=0A= + group:6 --> iv_cand:7, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1=0A= +=0A= +Improved to:=0A= + cost: 43 (complexity 0)=0A= + reg_cost: 13=0A= + cand_cost: 30=0A= + cand_group_cost: 0 (complexity 0)=0A= + candidates: 1, 3, 4, 6, 7, 8=0A= + group:0 --> iv_cand:3, cost=3D(0,0)=0A= + group:1 --> iv_cand:3, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:3, cost=3D(0,0)=0A= + group:4 --> iv_cand:6, cost=3D(0,0)=0A= + group:5 --> iv_cand:3, cost=3D(0,0)=0A= + group:6 --> iv_cand:7, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1=0A= +=0A= +Original cost 43 (complexity 0)=0A= +=0A= +Final cost 43 (complexity 0)=0A= +=0A= +Selected IV set for loop 1 at fp_foo.c:8, 10 avg niters, 6 IVs:=0A= +Candidate 1:=0A= + Var befor: ivtmp.42_18=0A= + Var after: ivtmp.42_17=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 3:=0A= + Var befor: i_50=0A= + Var after: j_24=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Var befor: ivtmp.44_16=0A= + Var after: ivtmp.44_15=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) (n_23(D) + -1)=0A= + Step: 4294967295=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 6:=0A= + Var befor: ivtmp.46_92=0A= + Var after: ivtmp.46_93=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + (sizetype) l_26(D) * 4)=0A= + Step: 18446744073709551612=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 7:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.47_98=0A= + Var after: ivtmp.47_99=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: (unsigned int) m_25(D) + 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 8:=0A= + Var befor: ivtmp.48_102=0A= + Var after: ivtmp.48_103=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) m_25(D)=0A= + Step: (unsigned int) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +Replacing exit test: if (j_24 < _45)=0A= diff --git a/gcc/testsuite/before.s b/gcc/testsuite/before.s=0A= new file mode 100644=0A= index 00000000000..e13834bdf59=0A= --- /dev/null=0A= +++ b/gcc/testsuite/before.s=0A= @@ -0,0 +1,152 @@=0A= + .file 1 "fp_foo.c"=0A= + .section .mdebug.abi64=0A= + .previous=0A= + .nan 2008=0A= + .module fp=3D64=0A= + .module oddspreg=0A= + .module arch=3Dmips64r6=0A= + .abicalls=0A= + .text=0A= + .align 2=0A= + .align 3=0A= + .globl daxpy=0A= + .set nomips16=0A= + .set nomicromips=0A= + .ent daxpy=0A= + .type daxpy, @function=0A= +daxpy:=0A= + .frame $sp,0,$31 # vars=3D 0, regs=3D 0/0, args=3D 0, gp=3D 0=0A= + .mask 0x00000000,0=0A= + .fmask 0x00000000,0=0A= + .set noreorder=0A= + .set nomacro=0A= + blezc $6,.L7=0A= + dlsa $6,$6,$4,2=0A= + .align 3=0A= +.L3:=0A= + lwc1 $f1,0($5)=0A= + daddiu $4,$4,4=0A= + lwc1 $f0,-4($4)=0A= + daddiu $5,$5,4=0A= + maddf.s $f0,$f1,$f15=0A= + bne $4,$6,.L3=0A= + swc1 $f0,-4($4)=0A= +=0A= +.L7:=0A= + jrc $31=0A= + .set macro=0A= + .set reorder=0A= + .end daxpy=0A= + .size daxpy, .-daxpy=0A= + .align 2=0A= + .align 3=0A= + .globl dgefa=0A= + .set nomips16=0A= + .set nomicromips=0A= + .ent dgefa=0A= + .type dgefa, @function=0A= +dgefa:=0A= + .frame $sp,48,$31 # vars=3D 0, regs=3D 6/0, args=3D 0, gp=3D 0=0A= + .mask 0x101f0000,-8=0A= + .fmask 0x00000000,0=0A= + .set noreorder=0A= + .set nomacro=0A= + li $2,1 # 0x1=0A= + bgec $2,$6,.L23=0A= + daddiu $sp,$sp,-48=0A= + addiu $14,$6,-1=0A= + move $11,$6=0A= + sd $20,32($sp)=0A= + sd $19,24($sp)=0A= + addiu $20,$5,1=0A= + sd $18,16($sp)=0A= + move $18,$4=0A= + sd $17,8($sp)=0A= + dlsa $10,$7,$4,2=0A= + sd $16,0($sp)=0A= + move $17,$5=0A= + dsll $12,$5,2=0A= + move $25,$5=0A= + move $13,$0=0A= + move $24,$0=0A= + move $15,$0=0A= + move $19,$14=0A= + .align 3=0A= +.L11:=0A= + addiu $8,$15,1=0A= + addiu $16,$15,1=0A= + move $15,$8=0A= + bgec $8,$11,.L15=0A= + daddu $5,$25,$24=0A= + daddiu $9,$13,1=0A= + dsubu $6,$0,$13=0A= + dsll $5,$5,2=0A= + dlsa $9,$9,$18,2=0A= + dsll $6,$6,2=0A= + move $7,$14=0A= + .align 3=0A= +.L14:=0A= + daddu $3,$10,$5=0A= + move $2,$9=0A= + lwc1 $f2,0($3)=0A= + move $4,$0=0A= + .align 3=0A= +.L13:=0A= + daddu $3,$6,$2=0A= + lwc1 $f0,0($2)=0A= + daddu $3,$3,$5=0A= + daddiu $2,$2,4=0A= + lwc1 $f1,0($3)=0A= + addiu $4,$4,1=0A= + maddf.s $f0,$f2,$f1=0A= + swc1 $f0,-4($2)=0A= + bltc $4,$7,.L13=0A= + addiu $8,$8,1=0A= + bne $11,$8,.L14=0A= + daddu $5,$5,$12=0A= +=0A= +.L15:=0A= + daddiu $24,$24,1=0A= + addu $13,$20,$13=0A= + addiu $14,$14,-1=0A= + daddiu $10,$10,-4=0A= + bne $19,$16,.L11=0A= + addu $25,$17,$25=0A= +=0A= + ld $20,32($sp)=0A= + ld $19,24($sp)=0A= + ld $18,16($sp)=0A= + ld $17,8($sp)=0A= + ld $16,0($sp)=0A= + jr $31=0A= + daddiu $sp,$sp,48=0A= +=0A= +.L23:=0A= + jrc $31=0A= + .set macro=0A= + .set reorder=0A= + .end dgefa=0A= + .size dgefa, .-dgefa=0A= + .section .text.startup,"ax",@progbits=0A= + .align 2=0A= + .align 3=0A= + .globl main=0A= + .set nomips16=0A= + .set nomicromips=0A= + .ent main=0A= + .type main, @function=0A= +main:=0A= + .frame $sp,0,$31 # vars=3D 0, regs=3D 0/0, args=3D 0, gp=3D 0=0A= + .mask 0x00000000,0=0A= + .fmask 0x00000000,0=0A= + .set noreorder=0A= + .set nomacro=0A= + jr $31=0A= + move $2,$0=0A= +=0A= + .set macro=0A= + .set reorder=0A= + .end main=0A= + .size main, .-main=0A= + .ident "GCC: (GNU) 14.0.1 20240214 (experimental)"=0A= + .section .note.GNU-stack,"",@progbits=0A= diff --git a/gcc/testsuite/before.txt b/gcc/testsuite/before.txt=0A= new file mode 100644=0A= index 00000000000..c87764b8ae9=0A= --- /dev/null=0A= +++ b/gcc/testsuite/before.txt=0A= @@ -0,0 +1,2694 @@=0A= +tree_ssa_iv_optimize=0A= +;;=0A= +;; Loop 1=0A= +;; header 3, latch 6=0A= +;; depth 1, outer 0, finite_p=0A= +;; niter (unsigned int) n_12(D) + 4294967295=0A= +;; upper_bound 2147483646=0A= +;; likely_upper_bound 2147483646=0A= +;; iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 05119324 (estimated locally, freq 0.8900)=0A= +;; nodes: 3 6=0A= +Processing loop 1 at fp_foo.c:3=0A= + single exit 3 -> 7, exit condition if (n_12(D) > i_17)=0A= +=0A= +=0A= +=0A= +Loops in function: daxpy=0A= +loop_0 (header =3D 0, latch =3D 1)=0A= +{=0A= + bb_2 (preds =3D {bb_0 }, succs =3D {bb_5 bb_4 })=0A= + {=0A= + [local count: 118111600]:=0A= + if (n_12(D) > 0)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_5 (preds =3D {bb_2 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 105119324]:=0A= +=0A= + }=0A= + bb_7 (preds =3D {bb_3 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 105119324]:=0A= + # .MEM_22 =3D PHI <.MEM_16(3)>=0A= +=0A= + }=0A= + bb_4 (preds =3D {bb_2 bb_7 }, succs =3D {bb_1 })=0A= + {=0A= + [local count: 118111600]:=0A= + # .MEM_29 =3D PHI <.MEM_11(D)(2), .MEM_22(7)>=0A= + # VUSE <.MEM_29>=0A= + return;=0A= +=0A= + }=0A= + loop_1 (header =3D 3, latch =3D 6, finite_p=0A= + niter (unsigned int) n_12(D) + 4294967295=0A= + upper_bound 2147483646=0A= + likely_upper_bound 2147483646=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:105= 119324 (estimated locally, freq 0.8900))=0A= + {=0A= + bb_3 (preds =3D {bb_6 bb_5 }, succs =3D {bb_6 bb_7 })=0A= + {=0A= + [local count: 955630224]:=0A= + # i_20 =3D PHI =0A= + # .MEM_21 =3D PHI <.MEM_16(6), .MEM_11(D)(5)>=0A= + _1 =3D (long unsigned int) i_20;=0A= + _2 =3D _1 * 4;=0A= + _3 =3D vector1_13(D) + _2;=0A= + # VUSE <.MEM_21>=0A= + _4 =3D *_3;=0A= + _5 =3D vector2_14(D) + _2;=0A= + # VUSE <.MEM_21>=0A= + _6 =3D *_5;=0A= + _7 =3D _6 * fp_const_15(D);=0A= + _8 =3D _4 + _7;=0A= + # .MEM_16 =3D VDEF <.MEM_21>=0A= + *_3 =3D _8;=0A= + i_17 =3D i_20 + 1;=0A= + if (n_12(D) > i_17)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_6 (preds =3D {bb_3 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 850510900]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + }=0A= +}=0A= +Analyzing # of iterations of loop 1=0A= + exit condition [1, + , 1](no_overflow) < n_12(D)=0A= + bounds on difference of bases: 0 ... 2147483646=0A= + result:=0A= + # of iterations (unsigned int) n_12(D) + 4294967295, bounded by 214748= 3646=0A= + number of iterations (unsigned int) n_12(D) + 4294967295=0A= +=0A= +:=0A= +IV struct:=0A= + SSA_NAME: _1=0A= + Type: long unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _2=0A= + Type: long unsigned int=0A= + Base: 0=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _3=0A= + Type: float *=0A= + Base: vector1_13(D)=0A= + Step: 4=0A= + Object: (void *) vector1_13(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _5=0A= + Type: float *=0A= + Base: vector2_14(D)=0A= + Step: 4=0A= + Object: (void *) vector2_14(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: i_17=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: i_20=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +:=0A= +Group 0:=0A= + Type: REFERENCE ADDRESS=0A= + Use 0.0:=0A= + At stmt: _4 =3D *_3;=0A= + At pos: *_3=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector1_13(D)=0A= + Step: 4=0A= + Object: (void *) vector1_13(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= + Use 0.1:=0A= + At stmt: *_3 =3D _8;=0A= + At pos: *_3=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector1_13(D)=0A= + Step: 4=0A= + Object: (void *) vector1_13(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 1:=0A= + Type: REFERENCE ADDRESS=0A= + Use 1.0:=0A= + At stmt: _6 =3D *_5;=0A= + At pos: *_5=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector2_14(D)=0A= + Step: 4=0A= + Object: (void *) vector2_14(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 2:=0A= + Type: COMPARE=0A= + Use 2.0:=0A= + At stmt: if (n_12(D) > i_17)=0A= + At pos: i_17=0A= + IV struct:=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +Predict doloop failure due to target specific checks.=0A= +Candidate 0:=0A= + Var befor: ivtmp.6=0A= + Var after: ivtmp.6=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 1:=0A= + Var befor: ivtmp.7=0A= + Var after: ivtmp.7=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 2:=0A= + Var befor: ivtmp.8=0A= + Var after: ivtmp.8=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 3:=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Var befor: ivtmp.9=0A= + Var after: ivtmp.9=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) vector1_13(D)=0A= + Step: 4=0A= + Object: (void *) vector1_13(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Var befor: ivtmp.10=0A= + Var after: ivtmp.10=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) vector2_14(D)=0A= + Step: 4=0A= + Object: (void *) vector2_14(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 6:=0A= + Var befor: ivtmp.11=0A= + Var after: ivtmp.11=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 7:=0A= + Var befor: ivtmp.12=0A= + Var after: ivtmp.12=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +: 0, 1, 2, 3,=0A= +=0A= + Related:=0A= + Group 0: 0, 1, 2, 3, 4, 7=0A= + Group 1: 0, 1, 2, 3, 5, 7=0A= + Group 2: 0, 1, 2, 3, 6=0A= +=0A= +:=0A= + cand cost=0A= +force_expr_to_var_cost size costs:=0A= + integer 0=0A= + symbol 5=0A= + address 5=0A= + other 24=0A= +=0A= +force_expr_to_var_cost speed costs:=0A= + integer 0=0A= + symbol 5=0A= + address 5=0A= + other 24=0A= +=0A= + 0 5=0A= + 1 5=0A= + 2 5=0A= + 3 4=0A= + 4 5=0A= + 5 5=0A= + 6 5=0A= + 7 5=0A= +=0A= +=0A= +:=0A= +Inv 4: n_12(D) (eliminable)=0A= +Inv 1: vector1_13(D) (eliminable)=0A= +Inv 2: vector2_14(D) (eliminable)=0A= +Inv 3: fp_const_15(D) (eliminable)=0A= +=0A= +:=0A= +inv_expr 1: (unsigned long) vector1_13(D) + 18446744073709551612=0A= +inv_expr 2: (unsigned long) vector2_14(D) + 18446744073709551612=0A= +inv_expr 3: (unsigned long) n_12(D) * 4 + (unsigned long) vector1_13(D)= =0A= +inv_expr 4: (unsigned long) n_12(D) * 4 + (unsigned long) vector2_14(D)= =0A= +=0A= +:=0A= +Group 0:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 18 0 NIL; 1=0A= + 2 20 0 1; NIL;=0A= + 4 2 0 NIL; NIL;=0A= + 7 10 0 NIL; 1=0A= +=0A= +Group 1:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 9 0 NIL; 2=0A= + 2 10 0 2; NIL;=0A= + 5 1 0 NIL; NIL;=0A= + 7 5 0 NIL; 2=0A= +=0A= +Group 2:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 0 0 NIL; 4=0A= + 1 0 0 NIL; 4=0A= + 2 1 0 NIL; 4=0A= + 3 0 0 NIL; 4=0A= + 4 1 0 3; NIL;=0A= + 5 1 0 4; NIL;=0A= + 6 0 0 NIL; 4=0A= + 7 1 0 NIL; 4=0A= +=0A= +=0A= +:=0A= + target_avail_regs 26=0A= + target_clobbered_regs 16=0A= + target_reg_cost 4=0A= + target_spill_cost 24=0A= + regs_used 0=0A= + cost for size:=0A= + ivs cost=0A= + 0 0=0A= + 1 2=0A= + 2 4=0A= + 3 6=0A= + 4 8=0A= + 5 10=0A= + 6 12=0A= + 7 14=0A= + 8 16=0A= + 9 18=0A= + 10 20=0A= + 11 22=0A= + 12 24=0A= + 13 26=0A= + 14 28=0A= + 15 30=0A= + 16 32=0A= + 17 34=0A= + 18 36=0A= + 19 38=0A= + 20 40=0A= + 21 42=0A= + 22 44=0A= + 23 115=0A= + 24 120=0A= + 25 125=0A= + 26 130=0A= + 27 179=0A= + 28 228=0A= + 29 277=0A= + 30 326=0A= + 31 375=0A= + 32 424=0A= + 33 473=0A= + 34 522=0A= + 35 571=0A= + 36 620=0A= + 37 669=0A= + 38 718=0A= + 39 767=0A= + 40 816=0A= + 41 865=0A= + 42 914=0A= + 43 963=0A= + 44 1012=0A= + 45 1061=0A= + 46 1110=0A= + 47 1159=0A= + 48 1208=0A= + 49 1257=0A= + 50 1306=0A= + 51 1355=0A= + 52 1404=0A= +=0A= +Initial set of candidates:=0A= + cost: 37 (complexity 0)=0A= + reg_cost: 5=0A= + cand_cost: 5=0A= + cand_group_cost: 27 (complexity 0)=0A= + candidates: 1=0A= + group:0 --> iv_cand:1, cost=3D(18,0)=0A= + group:1 --> iv_cand:1, cost=3D(9,0)=0A= + group:2 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: 1, 2, 4=0A= + invariant expressions: =0A= +=0A= +Improved to:=0A= + cost: 26 (complexity 0)=0A= + reg_cost: 5=0A= + cand_cost: 5=0A= + cand_group_cost: 16 (complexity 0)=0A= + candidates: 7=0A= + group:0 --> iv_cand:7, cost=3D(10,0)=0A= + group:1 --> iv_cand:7, cost=3D(5,0)=0A= + group:2 --> iv_cand:7, cost=3D(1,0)=0A= + invariant variables: 1, 2, 4=0A= + invariant expressions: =0A= +=0A= +Improved to:=0A= + cost: 24 (complexity 0)=0A= + reg_cost: 6=0A= + cand_cost: 10=0A= + cand_group_cost: 8 (complexity 0)=0A= + candidates: 4, 7=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:7, cost=3D(5,0)=0A= + group:2 --> iv_cand:7, cost=3D(1,0)=0A= + invariant variables: 2, 4=0A= + invariant expressions: =0A= +=0A= +Improved to:=0A= + cost: 19 (complexity 0)=0A= + reg_cost: 5=0A= + cand_cost: 10=0A= + cand_group_cost: 4 (complexity 0)=0A= + candidates: 4, 5=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:5, cost=3D(1,0)=0A= + group:2 --> iv_cand:4, cost=3D(1,0)=0A= + invariant variables: =0A= + invariant expressions: 3=0A= +=0A= +Initial set of candidates:=0A= + cost: 26 (complexity 0)=0A= + reg_cost: 5=0A= + cand_cost: 5=0A= + cand_group_cost: 16 (complexity 0)=0A= + candidates: 7=0A= + group:0 --> iv_cand:7, cost=3D(10,0)=0A= + group:1 --> iv_cand:7, cost=3D(5,0)=0A= + group:2 --> iv_cand:7, cost=3D(1,0)=0A= + invariant variables: 1, 2, 4=0A= + invariant expressions: =0A= +=0A= +Improved to:=0A= + cost: 24 (complexity 0)=0A= + reg_cost: 6=0A= + cand_cost: 10=0A= + cand_group_cost: 8 (complexity 0)=0A= + candidates: 4, 7=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:7, cost=3D(5,0)=0A= + group:2 --> iv_cand:7, cost=3D(1,0)=0A= + invariant variables: 2, 4=0A= + invariant expressions: =0A= +=0A= +Improved to:=0A= + cost: 19 (complexity 0)=0A= + reg_cost: 5=0A= + cand_cost: 10=0A= + cand_group_cost: 4 (complexity 0)=0A= + candidates: 4, 5=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:5, cost=3D(1,0)=0A= + group:2 --> iv_cand:4, cost=3D(1,0)=0A= + invariant variables: =0A= + invariant expressions: 3=0A= +=0A= +Original cost 19 (complexity 0)=0A= +=0A= +Final cost 19 (complexity 0)=0A= +=0A= +Selected IV set for loop 1 at fp_foo.c:3, 10 avg niters, 2 IVs:=0A= +Candidate 4:=0A= + Var befor: ivtmp.9_28=0A= + Var after: ivtmp.9_27=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) vector1_13(D)=0A= + Step: 4=0A= + Object: (void *) vector1_13(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Var befor: ivtmp.10_25=0A= + Var after: ivtmp.10_24=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) vector2_14(D)=0A= + Step: 4=0A= + Object: (void *) vector2_14(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +Replacing exit test: if (n_12(D) > i_17)=0A= +tree_ssa_iv_optimize=0A= +;;=0A= +;; Loop 3=0A= +;; header 8, latch 13=0A= +;; depth 3, outer 2, finite_p=0A= +;; niter _87 > 0 ? (unsigned int) _87 + 4294967295 : 0=0A= +;; upper_bound 2147483645=0A= +;; likely_upper_bound 2147483645=0A= +;; iterations by profile: 7.090909 (unreliable, maybe flat) entry count:1= 18111600 (estimated locally, freq 65.4628)=0A= +;; nodes: 8 13=0A= +Processing loop 3 at fp_foo.c:3=0A= + single exit 8 -> 9, exit condition if (i_40 < _87)=0A= +=0A= +=0A= +=0A= +Loops in function: dgefa=0A= +loop_0 (header =3D 0, latch =3D 1)=0A= +{=0A= + bb_2 (preds =3D {bb_0 }, succs =3D {bb_10 bb_14 })=0A= + {=0A= + [local count: 1804255]:=0A= + _45 =3D n_23(D) + -1;=0A= + if (n_23(D) > 1)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_14 (preds =3D {bb_2 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 198468]:=0A= +=0A= + }=0A= + bb_3 (preds =3D {bb_14 bb_16 }, succs =3D {bb_1 })=0A= + {=0A= + [local count: 1804255]:=0A= + # .MEM_88 =3D PHI <.MEM_22(D)(14), .MEM_53(16)>=0A= + # VUSE <.MEM_88>=0A= + return;=0A= +=0A= + }=0A= + bb_10 (preds =3D {bb_2 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_16 (preds =3D {bb_5 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 1605787]:=0A= + # .MEM_53 =3D PHI <.MEM_89(5)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_1 (header =3D 4, latch =3D 11, finite_p=0A= + niter (unsigned int) n_23(D) + 4294967294=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:160= 5787 (estimated locally, freq 0.8900))=0A= + {=0A= + bb_4 (preds =3D {bb_11 bb_10 }, succs =3D {bb_6 bb_15 })=0A= + {=0A= + [local count: 14598063]:=0A= + # i_50 =3D PHI =0A= + # .MEM_54 =3D PHI <.MEM_89(11), .MEM_22(D)(10)>=0A= + j_24 =3D i_50 + 1;=0A= + if (n_23(D) > j_24)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_15 (preds =3D {bb_4 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_5 (preds =3D {bb_15 bb_17 }, succs =3D {bb_11 bb_16 })=0A= + {=0A= + [local count: 14598063]:=0A= + # .MEM_89 =3D PHI <.MEM_54(15), .MEM_86(17)>=0A= + if (j_24 < _45)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_11 (preds =3D {bb_5 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 12992276]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + bb_6 (preds =3D {bb_4 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 12992276]:=0A= + _6 =3D m_25(D) * i_50;=0A= + _7 =3D _6 + i_50;=0A= + _8 =3D (sizetype) _7;=0A= + _9 =3D _8 + 1;=0A= + _10 =3D _9 * 4;=0A= + _87 =3D n_23(D) - j_24;=0A= +=0A= + }=0A= + bb_17 (preds =3D {bb_9 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 12992276]:=0A= + # .MEM_86 =3D PHI <.MEM_55(9)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_2 (header =3D 7, latch =3D 12, finite_p=0A= + niter ((unsigned int) n_23(D) - (unsigned int) i_50) - 2=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 2992276 (estimated locally, freq 7.2009))=0A= + {=0A= + bb_7 (preds =3D {bb_12 bb_6 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 118111600]:=0A= + # j_51 =3D PHI =0A= + # .MEM_52 =3D PHI <.MEM_55(12), .MEM_54(6)>=0A= + _1 =3D m_25(D) * j_51;=0A= + _2 =3D _1 + l_26(D);=0A= + _3 =3D (long unsigned int) _2;=0A= + _4 =3D _3 * 4;=0A= + _5 =3D vector_27(D) + _4;=0A= + # VUSE <.MEM_52>=0A= + t_28 =3D *_5;=0A= + _11 =3D _1 + i_50;=0A= + _12 =3D (sizetype) _11;=0A= + _13 =3D _12 + 1;=0A= + _14 =3D _13 * 4;=0A= +=0A= + }=0A= + bb_9 (preds =3D {bb_8 }, succs =3D {bb_12 bb_17 })=0A= + {=0A= + [local count: 118111600]:=0A= + # .MEM_55 =3D PHI <.MEM_42(8)>=0A= + j_30 =3D j_51 + 1;=0A= + if (n_23(D) > j_30)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_12 (preds =3D {bb_9 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 105119324]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_3 (header =3D 8, latch =3D 13, finite_p=0A= + niter _87 > 0 ? (unsigned int) _87 + 4294967295 : 0=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 7.090909 (unreliable, maybe flat) entry count= :118111600 (estimated locally, freq 65.4628))=0A= + {=0A= + bb_8 (preds =3D {bb_13 bb_7 }, succs =3D {bb_13 bb_9 })=0A= + {=0A= + [local count: 955630225]:=0A= + # i_56 =3D PHI =0A= + # .MEM_57 =3D PHI <.MEM_42(13), .MEM_52(7)>=0A= + _32 =3D (long unsigned int) i_56;=0A= + _33 =3D _32 * 4;=0A= + _21 =3D _10 + _33;=0A= + _34 =3D vector_27(D) + _21;=0A= + # VUSE <.MEM_57>=0A= + _35 =3D *_34;=0A= + _29 =3D _14 + _33;=0A= + _36 =3D vector_27(D) + _29;=0A= + # VUSE <.MEM_57>=0A= + _37 =3D *_36;=0A= + _38 =3D t_28 * _37;=0A= + _39 =3D _35 + _38;=0A= + # .MEM_42 =3D VDEF <.MEM_57>=0A= + *_34 =3D _39;=0A= + i_40 =3D i_56 + 1;=0A= + if (i_40 < _87)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_13 (preds =3D {bb_8 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 850510901]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + }=0A= + }=0A= + }=0A= +}=0A= +Analyzing # of iterations of loop 3=0A= + exit condition [1, + , 1](no_overflow) < _87=0A= + bounds on difference of bases: -2147483649 ... 2147483646=0A= + result:=0A= + zero if _87 <=3D 0=0A= + # of iterations (unsigned int) _87 + 4294967295, bounded by 2147483646= =0A= + number of iterations (unsigned int) _87 + 4294967295; zero if _87 <=3D 0= =0A= +=0A= +:=0A= +IV struct:=0A= + SSA_NAME: _21=0A= + Type: sizetype=0A= + Base: ((sizetype) _7 + 1) * 4=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _29=0A= + Type: sizetype=0A= + Base: ((sizetype) _11 + 1) * 4=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _32=0A= + Type: long unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _33=0A= + Type: long unsigned int=0A= + Base: 0=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _34=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) _7 + 1) * 4=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _36=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) _11 + 1) * 4=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: i_40=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: i_56=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +:=0A= +Group 0:=0A= + Type: REFERENCE ADDRESS=0A= + Use 0.0:=0A= + At stmt: _35 =3D *_34;=0A= + At pos: *_34=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) _7 + 1) * 4=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= + Use 0.1:=0A= + At stmt: *_34 =3D _39;=0A= + At pos: *_34=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) _7 + 1) * 4=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 1:=0A= + Type: REFERENCE ADDRESS=0A= + Use 1.0:=0A= + At stmt: _37 =3D *_36;=0A= + At pos: *_36=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector_27(D) + ((sizetype) _11 + 1) * 4=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 2:=0A= + Type: COMPARE=0A= + Use 2.0:=0A= + At stmt: if (i_40 < _87)=0A= + At pos: i_40=0A= + IV struct:=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +Predict doloop failure due to target specific checks.=0A= +Candidate 0:=0A= + Var befor: ivtmp.20=0A= + Var after: ivtmp.20=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 1:=0A= + Var befor: ivtmp.21=0A= + Var after: ivtmp.21=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 2:=0A= + Var befor: ivtmp.22=0A= + Var after: ivtmp.22=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 3:=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Var befor: ivtmp.23=0A= + Var after: ivtmp.23=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + ((sizetype) _7 + 1) * 4)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Var befor: ivtmp.24=0A= + Var after: ivtmp.24=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) ((sizetype) _7 * 4) + (unsigned long) vector_27(= D)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 6:=0A= + Var befor: ivtmp.25=0A= + Var after: ivtmp.25=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + ((sizetype) _11 + 1) * 4)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 7:=0A= + Var befor: ivtmp.26=0A= + Var after: ivtmp.26=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) ((sizetype) _11 * 4) + (unsigned long) vector_27= (D)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 8:=0A= + Var befor: ivtmp.27=0A= + Var after: ivtmp.27=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 9:=0A= + Var befor: ivtmp.28=0A= + Var after: ivtmp.28=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +: 0, 1, 2, 3,=0A= +=0A= + Related:=0A= + Group 0: 0, 1, 2, 3, 4, 5, 9=0A= + Group 1: 0, 1, 2, 3, 6, 7, 9=0A= + Group 2: 0, 1, 2, 3, 8=0A= +=0A= +:=0A= + cand cost=0A= + 0 5=0A= + 1 5=0A= + 2 5=0A= + 3 4=0A= + 4 6=0A= + 5 6=0A= + 6 6=0A= + 7 6=0A= + 8 5=0A= + 9 5=0A= +=0A= +=0A= +:=0A= +Inv 6: _7 (eliminable)=0A= +Inv 1: _10 (eliminable)=0A= +Inv 7: _11 (eliminable)=0A= +Inv 3: _14 (eliminable)=0A= +Inv 2: vector_27(D) (eliminable)=0A= +Inv 4: t_28 (eliminable)=0A= +Inv 5: _87 (eliminable)=0A= +=0A= +:=0A= +inv_expr 1: ((unsigned long) _7 * 4 + (unsigned long) vector_27(D)) + 4= =0A= +inv_expr 2: (unsigned long) _7 * 4 + (unsigned long) vector_27(D)=0A= +inv_expr 3: ((unsigned long) _7 - (unsigned long) _11) * 4=0A= +inv_expr 4: ((unsigned long) _11 * 18446744073709551612 + (unsigned long)= _7 * 4) + 4=0A= +inv_expr 5: ((unsigned long) _11 * 4 + (unsigned long) vector_27(D)) + 4= =0A= +inv_expr 6: (unsigned long) _11 * 4 + (unsigned long) vector_27(D)=0A= +inv_expr 7: ((unsigned long) _11 - (unsigned long) _7) * 4=0A= +inv_expr 8: ((unsigned long) _7 * 18446744073709551612 + (unsigned long) = _11 * 4) + 4=0A= +=0A= +:=0A= +Group 0:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 22 0 1; NIL;=0A= + 2 22 0 2; NIL;=0A= + 4 2 0 NIL; NIL;=0A= + 5 2 2 NIL; NIL;=0A= + 6 16 0 3; NIL;=0A= + 7 18 0 4; NIL;=0A= + 9 14 0 1; NIL;=0A= +=0A= +Group 1:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 11 0 5; NIL;=0A= + 2 11 0 6; NIL;=0A= + 4 8 0 7; NIL;=0A= + 5 9 0 8; NIL;=0A= + 6 1 0 NIL; NIL;=0A= + 7 1 1 NIL; NIL;=0A= + 9 7 0 5; NIL;=0A= +=0A= +Group 2:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 0 0 NIL; 5=0A= + 1 0 0 NIL; 5=0A= + 2 4 0 NIL; 5=0A= + 3 0 0 NIL; 5=0A= + 8 4 0 NIL; 5=0A= +=0A= +=0A= +:=0A= + target_avail_regs 26=0A= + target_clobbered_regs 16=0A= + target_reg_cost 4=0A= + target_spill_cost 24=0A= + regs_used 0=0A= + cost for size:=0A= + ivs cost=0A= + 0 0=0A= + 1 2=0A= + 2 4=0A= + 3 6=0A= + 4 8=0A= + 5 10=0A= + 6 12=0A= + 7 14=0A= + 8 16=0A= + 9 18=0A= + 10 20=0A= + 11 22=0A= + 12 24=0A= + 13 26=0A= + 14 28=0A= + 15 30=0A= + 16 32=0A= + 17 34=0A= + 18 36=0A= + 19 38=0A= + 20 40=0A= + 21 42=0A= + 22 44=0A= + 23 115=0A= + 24 120=0A= + 25 125=0A= + 26 130=0A= + 27 179=0A= + 28 228=0A= + 29 277=0A= + 30 326=0A= + 31 375=0A= + 32 424=0A= + 33 473=0A= + 34 522=0A= + 35 571=0A= + 36 620=0A= + 37 669=0A= + 38 718=0A= + 39 767=0A= + 40 816=0A= + 41 865=0A= + 42 914=0A= + 43 963=0A= + 44 1012=0A= + 45 1061=0A= + 46 1110=0A= + 47 1159=0A= + 48 1208=0A= + 49 1257=0A= + 50 1306=0A= + 51 1355=0A= + 52 1404=0A= +=0A= +Initial set of candidates:=0A= + cost: 43 (complexity 0)=0A= + reg_cost: 5=0A= + cand_cost: 5=0A= + cand_group_cost: 33 (complexity 0)=0A= + candidates: 1=0A= + group:0 --> iv_cand:1, cost=3D(22,0)=0A= + group:1 --> iv_cand:1, cost=3D(11,0)=0A= + group:2 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: 5=0A= + invariant expressions: 1, 5=0A= +=0A= +Improved to:=0A= + cost: 27 (complexity 0)=0A= + reg_cost: 6=0A= + cand_cost: 11=0A= + cand_group_cost: 10 (complexity 0)=0A= + candidates: 1, 4=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:4, cost=3D(8,0)=0A= + group:2 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: 5=0A= + invariant expressions: 7=0A= +=0A= +Improved to:=0A= + cost: 26 (complexity 0)=0A= + reg_cost: 6=0A= + cand_cost: 10=0A= + cand_group_cost: 10 (complexity 0)=0A= + candidates: 3, 4=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:4, cost=3D(8,0)=0A= + group:2 --> iv_cand:3, cost=3D(0,0)=0A= + invariant variables: 5=0A= + invariant expressions: 7=0A= +=0A= +Initial set of candidates:=0A= + cost: 37 (complexity 0)=0A= + reg_cost: 7=0A= + cand_cost: 9=0A= + cand_group_cost: 21 (complexity 0)=0A= + candidates: 3, 9=0A= + group:0 --> iv_cand:9, cost=3D(14,0)=0A= + group:1 --> iv_cand:9, cost=3D(7,0)=0A= + group:2 --> iv_cand:3, cost=3D(0,0)=0A= + invariant variables: 5=0A= + invariant expressions: 1, 5=0A= +=0A= +Improved to:=0A= + cost: 26 (complexity 0)=0A= + reg_cost: 6=0A= + cand_cost: 10=0A= + cand_group_cost: 10 (complexity 0)=0A= + candidates: 3, 4=0A= + group:0 --> iv_cand:4, cost=3D(2,0)=0A= + group:1 --> iv_cand:4, cost=3D(8,0)=0A= + group:2 --> iv_cand:3, cost=3D(0,0)=0A= + invariant variables: 5=0A= + invariant expressions: 7=0A= +=0A= +Original cost 26 (complexity 0)=0A= +=0A= +Final cost 26 (complexity 0)=0A= +=0A= +Selected IV set for loop 3 at fp_foo.c:3, 10 avg niters, 2 IVs:=0A= +Candidate 3:=0A= + Var befor: i_56=0A= + Var after: i_40=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Var befor: ivtmp.23_85=0A= + Var after: ivtmp.23_84=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + ((sizetype) _7 + 1) * 4)=0A= + Step: 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= + allowed multipliers:=0A= +=0A= +;;=0A= +;; Loop 2=0A= +;; header 7, latch 12=0A= +;; depth 2, outer 1, finite_p=0A= +;; niter ((unsigned int) n_23(D) - (unsigned int) i_50) - 2=0A= +;; upper_bound 2147483645=0A= +;; likely_upper_bound 2147483645=0A= +;; iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 2992276 (estimated locally, freq 7.2009)=0A= +;; nodes: 7 12 9 8 13=0A= +Processing loop 2 at fp_foo.c:9=0A= + single exit 9 -> 17, exit condition if (n_23(D) > j_30)=0A= +=0A= +=0A= +=0A= +Loops in function: dgefa=0A= +loop_0 (header =3D 0, latch =3D 1)=0A= +{=0A= + bb_2 (preds =3D {bb_0 }, succs =3D {bb_10 bb_14 })=0A= + {=0A= + [local count: 1804255]:=0A= + _45 =3D n_23(D) + -1;=0A= + if (n_23(D) > 1)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_14 (preds =3D {bb_2 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 198468]:=0A= +=0A= + }=0A= + bb_3 (preds =3D {bb_14 bb_16 }, succs =3D {bb_1 })=0A= + {=0A= + [local count: 1804255]:=0A= + # .MEM_88 =3D PHI <.MEM_22(D)(14), .MEM_53(16)>=0A= + # VUSE <.MEM_88>=0A= + return;=0A= +=0A= + }=0A= + bb_10 (preds =3D {bb_2 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_16 (preds =3D {bb_5 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 1605787]:=0A= + # .MEM_53 =3D PHI <.MEM_89(5)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_1 (header =3D 4, latch =3D 11, finite_p=0A= + niter (unsigned int) n_23(D) + 4294967294=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:160= 5787 (estimated locally, freq 0.8900))=0A= + {=0A= + bb_4 (preds =3D {bb_11 bb_10 }, succs =3D {bb_6 bb_15 })=0A= + {=0A= + [local count: 14598063]:=0A= + # i_50 =3D PHI =0A= + # .MEM_54 =3D PHI <.MEM_89(11), .MEM_22(D)(10)>=0A= + j_24 =3D i_50 + 1;=0A= + if (n_23(D) > j_24)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_15 (preds =3D {bb_4 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_5 (preds =3D {bb_15 bb_17 }, succs =3D {bb_11 bb_16 })=0A= + {=0A= + [local count: 14598063]:=0A= + # .MEM_89 =3D PHI <.MEM_54(15), .MEM_86(17)>=0A= + if (j_24 < _45)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_11 (preds =3D {bb_5 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 12992276]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + bb_6 (preds =3D {bb_4 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 12992276]:=0A= + _6 =3D m_25(D) * i_50;=0A= + _7 =3D _6 + i_50;=0A= + _8 =3D (sizetype) _7;=0A= + _9 =3D _8 + 1;=0A= + _10 =3D _9 * 4;=0A= + _87 =3D n_23(D) - j_24;=0A= +=0A= + }=0A= + bb_17 (preds =3D {bb_9 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 12992276]:=0A= + # .MEM_86 =3D PHI <.MEM_55(9)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_2 (header =3D 7, latch =3D 12, finite_p=0A= + niter ((unsigned int) n_23(D) - (unsigned int) i_50) - 2=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 2992276 (estimated locally, freq 7.2009))=0A= + {=0A= + bb_7 (preds =3D {bb_12 bb_6 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 118111600]:=0A= + # j_51 =3D PHI =0A= + # .MEM_52 =3D PHI <.MEM_55(12), .MEM_54(6)>=0A= + _1 =3D m_25(D) * j_51;=0A= + _2 =3D _1 + l_26(D);=0A= + _3 =3D (long unsigned int) _2;=0A= + _4 =3D _3 * 4;=0A= + _5 =3D vector_27(D) + _4;=0A= + # VUSE <.MEM_52>=0A= + t_28 =3D *_5;=0A= + _11 =3D _1 + i_50;=0A= + _12 =3D (sizetype) _11;=0A= + _13 =3D _12 + 1;=0A= + _14 =3D _13 * 4;=0A= + _82 =3D (sizetype) _7;=0A= + _81 =3D _82 + 1;=0A= + _80 =3D _81 * 4;=0A= + _79 =3D vector_27(D) + _80;=0A= + ivtmp.23_83 =3D (unsigned long) _79;=0A= +=0A= + }=0A= + bb_9 (preds =3D {bb_8 }, succs =3D {bb_12 bb_17 })=0A= + {=0A= + [local count: 118111600]:=0A= + # .MEM_55 =3D PHI <.MEM_42(8)>=0A= + j_30 =3D j_51 + 1;=0A= + if (n_23(D) > j_30)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_12 (preds =3D {bb_9 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 105119324]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_3 (header =3D 8, latch =3D 13, finite_p=0A= + niter _87 > 0 ? (unsigned int) _87 + 4294967295 : 0=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 7.090909 (unreliable, maybe flat) entry count= :118111600 (estimated locally, freq 65.4628))=0A= + {=0A= + bb_8 (preds =3D {bb_13 bb_7 }, succs =3D {bb_13 bb_9 })=0A= + {=0A= + [local count: 955630225]:=0A= + # i_56 =3D PHI =0A= + # .MEM_57 =3D PHI <.MEM_42(13), .MEM_52(7)>=0A= + # ivtmp.23_85 =3D PHI =0A= + _32 =3D (long unsigned int) i_56;=0A= + _33 =3D _32 * 4;=0A= + _21 =3D _10 + _33;=0A= + _34 =3D vector_27(D) + _21;=0A= + _78 =3D (void *) ivtmp.23_85;=0A= + # VUSE <.MEM_57>=0A= + _35 =3D MEM[(float *)_78];=0A= + _29 =3D _14 + _33;=0A= + _36 =3D vector_27(D) + _29;=0A= + _76 =3D (sizetype) _7;=0A= + _75 =3D _76 * 18446744073709551612;=0A= + _74 =3D _75 + ivtmp.23_85;=0A= + _73 =3D (void *) _74;=0A= + _72 =3D (sizetype) _11;=0A= + _71 =3D _72 * 4;=0A= + _70 =3D _73 + _71;=0A= + # VUSE <.MEM_57>=0A= + _37 =3D MEM[(float *)_70];=0A= + _38 =3D t_28 * _37;=0A= + _39 =3D _35 + _38;=0A= + _77 =3D (void *) ivtmp.23_85;=0A= + # .MEM_42 =3D VDEF <.MEM_57>=0A= + MEM[(float *)_77] =3D _39;=0A= + i_40 =3D i_56 + 1;=0A= + ivtmp.23_84 =3D ivtmp.23_85 + 4;=0A= + if (i_40 < _87)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_13 (preds =3D {bb_8 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 850510901]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + }=0A= + }=0A= + }=0A= +}=0A= +Analyzing # of iterations of loop 2=0A= + exit condition [i_50 + 2, + , 1](no_overflow) < n_23(D)=0A= + bounds on difference of bases: 0 ... 2147483645=0A= + result:=0A= + # of iterations ((unsigned int) n_23(D) - (unsigned int) i_50) - 2, bo= unded by 2147483645=0A= + number of iterations ((unsigned int) n_23(D) - (unsigned int) i_50) - 2= =0A= +=0A= +:=0A= +IV struct:=0A= + SSA_NAME: _1=0A= + Type: int=0A= + Base: (i_50 + 1) * m_25(D)=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _2=0A= + Type: int=0A= + Base: (i_50 + 1) * m_25(D) + l_26(D)=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _3=0A= + Type: long unsigned int=0A= + Base: (long unsigned int) ((i_50 + 1) * m_25(D)) + (long unsigned int) l= _26(D)=0A= + Step: (long unsigned int) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _4=0A= + Type: long unsigned int=0A= + Base: ((long unsigned int) ((i_50 + 1) * m_25(D)) + (long unsigned int) = l_26(D)) * 4=0A= + Step: (long unsigned int) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _5=0A= + Type: float *=0A= + Base: vector_27(D) + ((long unsigned int) ((i_50 + 1) * m_25(D)) + (long= unsigned int) l_26(D)) * 4=0A= + Step: (long unsigned int) m_25(D) * 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _11=0A= + Type: int=0A= + Base: (i_50 + 1) * m_25(D) + i_50=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _12=0A= + Type: sizetype=0A= + Base: (sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50=0A= + Step: (sizetype) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _13=0A= + Type: sizetype=0A= + Base: ((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1=0A= + Step: (sizetype) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _14=0A= + Type: sizetype=0A= + Base: (((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1) * 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: j_30=0A= + Type: int=0A= + Base: i_50 + 2=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: j_51=0A= + Type: int=0A= + Base: i_50 + 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _71=0A= + Type: sizetype=0A= + Base: ((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) * 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _72=0A= + Type: sizetype=0A= + Base: (sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50=0A= + Step: (sizetype) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +:=0A= +Group 0:=0A= + Type: REFERENCE ADDRESS=0A= + Use 0.0:=0A= + At stmt: t_28 =3D *_5;=0A= + At pos: *_5=0A= + IV struct:=0A= + Type: float *=0A= + Base: vector_27(D) + ((long unsigned int) ((i_50 + 1) * m_25(D)) + (= long unsigned int) l_26(D)) * 4=0A= + Step: (long unsigned int) m_25(D) * 4=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 1:=0A= + Type: COMPARE=0A= + Use 1.0:=0A= + At stmt: if (n_23(D) > j_30)=0A= + At pos: j_30=0A= + IV struct:=0A= + Type: int=0A= + Base: i_50 + 2=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 2:=0A= + Type: GENERIC=0A= + Use 2.0:=0A= + At stmt: _14 =3D _13 * 4;=0A= + At pos: =0A= + IV struct:=0A= + Type: sizetype=0A= + Base: (((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1) * = 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 3:=0A= + Type: GENERIC=0A= + Use 3.0:=0A= + At stmt: _71 =3D _72 * 4;=0A= + At pos: =0A= + IV struct:=0A= + Type: sizetype=0A= + Base: ((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) * 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +Predict doloop failure due to target specific checks.=0A= +Candidate 0:=0A= + Var befor: ivtmp.29=0A= + Var after: ivtmp.29=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 1:=0A= + Var befor: ivtmp.30=0A= + Var after: ivtmp.30=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 2:=0A= + Var befor: ivtmp.31=0A= + Var after: ivtmp.31=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: (sizetype) (i_50 + 2)=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 3:=0A= + Var befor: ivtmp.32=0A= + Var after: ivtmp.32=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: (sizetype) (i_50 + 1)=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: i_50 + 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.33=0A= + Var after: ivtmp.33=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + ((long unsigned int) ((i_50 + 1)= * m_25(D)) + (long unsigned int) l_26(D)) * 4)=0A= + Step: (unsigned long) ((long unsigned int) m_25(D) * 4)=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 6:=0A= + Var befor: ivtmp.34=0A= + Var after: ivtmp.34=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) (i_50 + 2)=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 7:=0A= + Var befor: ivtmp.35=0A= + Var after: ivtmp.35=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) i_50=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 8:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.36=0A= + Var after: ivtmp.36=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: (((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) + 1) * 4= =0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 9:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.37=0A= + Var after: ivtmp.37=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: ((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) * 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 10:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.38=0A= + Var after: ivtmp.38=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: (long unsigned int) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +: 0, 1, 2, 3, 4,=0A= +=0A= + Related:=0A= + Group 0: 0, 1, 2, 3, 4, 5, 10=0A= + Group 1: 0, 1, 2, 3, 4, 6, 7=0A= + Group 2: 0, 1, 2, 3, 4, 8, 9, 10=0A= + Group 3: 0, 1, 2, 3, 4, 9, 10=0A= +=0A= +:=0A= + cand cost=0A= + 0 5=0A= + 1 5=0A= + 2 6=0A= + 3 6=0A= + 4 4=0A= + 5 9=0A= + 6 5=0A= + 7 5=0A= + 8 10=0A= + 9 9=0A= + 10 5=0A= +=0A= +Scaling cost based on bb prob by 8.00: 6 (scratch: 2) -> 34=0A= +Scaling cost based on bb prob by 8.00: 4 (scratch: 0) -> 32=0A= +Scaling cost based on bb prob by 8.00: 0 (scratch: 0) -> 0=0A= +Scaling cost based on bb prob by 8.00: 8 (scratch: 4) -> 36=0A= +=0A= +:=0A= +Inv 6: _7=0A= +Inv 8: _10=0A= +Inv 7: n_23(D) (eliminable)=0A= +Inv 1: j_24 (eliminable)=0A= +Inv 2: m_25(D) (eliminable)=0A= +Inv 3: l_26(D) (eliminable)=0A= +Inv 4: vector_27(D)=0A= +Inv 5: i_50 (eliminable)=0A= +Inv 9: _87=0A= +=0A= +:=0A= +inv_expr 1: (long unsigned int) m_25(D) * 4=0A= +inv_expr 2: (((unsigned long) l_26(D) * 4 + (unsigned long) vector_27(D))= - (unsigned long) i_50 * 4) + 18446744073709551612=0A= +inv_expr 3: ((unsigned long) l_26(D) * 4 + (unsigned long) vector_27(D)) = - (unsigned long) i_50 * 4=0A= +inv_expr 4: ((unsigned long) ((i_50 + 1) * m_25(D)) + (unsigned long) l_2= 6(D)) * 4 + (unsigned long) vector_27(D)=0A= +inv_expr 5: ((unsigned int) n_23(D) - (unsigned int) i_50) + 4294967295= =0A= +inv_expr 6: (signed int) i_50 + 1=0A= +inv_expr 7: (unsigned long) (((unsigned int) n_23(D) - (unsigned int) i_5= 0) + 4294967294) + 1=0A= +inv_expr 8: ((sizetype) i_50 + (sizetype) (((unsigned int) n_23(D) - (uns= igned int) i_50) + 4294967294)) + 3=0A= +inv_expr 9: ((sizetype) i_50 + (sizetype) (((unsigned int) n_23(D) - (uns= igned int) i_50) + 4294967294)) + 2=0A= +inv_expr 10: (((signed long) i_50 * 4 - (signed long) vector_27(D)) - (si= gned long) l_26(D) * 4) + 4=0A= +inv_expr 11: (((signed long) ((i_50 + 1) * m_25(D)) + (signed long) i_50)= + 1) * 4=0A= +inv_expr 12: ((signed long) i_50 * 4 - (signed long) vector_27(D)) - (sig= ned long) l_26(D) * 4=0A= +inv_expr 13: ((signed long) ((i_50 + 1) * m_25(D)) + (signed long) i_50) = * 4=0A= +=0A= +:=0A= +Group 0:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 5 1 0 NIL; NIL;=0A= + 8 9 0 2; NIL;=0A= + 9 8 0 3; NIL;=0A= + 10 10 0 4; NIL;=0A= +=0A= +Group 1:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 0 0 5; NIL;=0A= + 1 2 0 7; NIL;=0A= + 2 3 0 8; NIL;=0A= + 3 0 0 NIL; 7=0A= + 4 0 0 NIL; 7=0A= + 6 0 0 NIL; 7=0A= + 7 0 0 NIL; 7=0A= +=0A= +Group 2:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 5 7 0 10; NIL;=0A= + 8 0 0 NIL; NIL;=0A= + 9 4 0 NIL; NIL;=0A= + 10 9 0 11; NIL;=0A= +=0A= +Group 3:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 5 34 0 12; NIL;=0A= + 8 32 0 NIL; NIL;=0A= + 9 0 0 NIL; NIL;=0A= + 10 36 0 13; NIL;=0A= +=0A= +=0A= +:=0A= + target_avail_regs 26=0A= + target_clobbered_regs 16=0A= + target_reg_cost 4=0A= + target_spill_cost 24=0A= + regs_used 4=0A= + cost for size:=0A= + ivs cost=0A= + 0 0=0A= + 1 2=0A= + 2 4=0A= + 3 6=0A= + 4 8=0A= + 5 10=0A= + 6 12=0A= + 7 14=0A= + 8 16=0A= + 9 18=0A= + 10 20=0A= + 11 22=0A= + 12 24=0A= + 13 26=0A= + 14 28=0A= + 15 30=0A= + 16 32=0A= + 17 34=0A= + 18 36=0A= + 19 111=0A= + 20 116=0A= + 21 121=0A= + 22 126=0A= + 23 151=0A= + 24 176=0A= + 25 201=0A= + 26 226=0A= + 27 275=0A= + 28 324=0A= + 29 373=0A= + 30 422=0A= + 31 471=0A= + 32 520=0A= + 33 569=0A= + 34 618=0A= + 35 667=0A= + 36 716=0A= + 37 765=0A= + 38 814=0A= + 39 863=0A= + 40 912=0A= + 41 961=0A= + 42 1010=0A= + 43 1059=0A= + 44 1108=0A= + 45 1157=0A= + 46 1206=0A= + 47 1255=0A= + 48 1304=0A= + 49 1353=0A= + 50 1402=0A= + 51 1451=0A= + 52 1500=0A= +=0A= +Initial set of candidates:=0A= + cost: 63 (complexity 0)=0A= + reg_cost: 8=0A= + cand_cost: 13=0A= + cand_group_cost: 42 (complexity 0)=0A= + candidates: 4, 5=0A= + group:0 --> iv_cand:5, cost=3D(1,0)=0A= + group:1 --> iv_cand:4, cost=3D(0,0)=0A= + group:2 --> iv_cand:5, cost=3D(7,0)=0A= + group:3 --> iv_cand:5, cost=3D(34,0)=0A= + invariant variables: 7=0A= + invariant expressions: 1, 10, 12=0A= +=0A= +Improved to:=0A= + cost: 32 (complexity 0)=0A= + reg_cost: 7=0A= + cand_cost: 13=0A= + cand_group_cost: 12 (complexity 0)=0A= + candidates: 4, 9=0A= + group:0 --> iv_cand:9, cost=3D(8,0)=0A= + group:1 --> iv_cand:4, cost=3D(0,0)=0A= + group:2 --> iv_cand:9, cost=3D(4,0)=0A= + group:3 --> iv_cand:9, cost=3D(0,0)=0A= + invariant variables: 7=0A= + invariant expressions: 1, 3=0A= +=0A= +Initial set of candidates:=0A= + cost: 32 (complexity 0)=0A= + reg_cost: 7=0A= + cand_cost: 13=0A= + cand_group_cost: 12 (complexity 0)=0A= + candidates: 4, 9=0A= + group:0 --> iv_cand:9, cost=3D(8,0)=0A= + group:1 --> iv_cand:4, cost=3D(0,0)=0A= + group:2 --> iv_cand:9, cost=3D(4,0)=0A= + group:3 --> iv_cand:9, cost=3D(0,0)=0A= + invariant variables: 7=0A= + invariant expressions: 1, 3=0A= +=0A= +Original cost 32 (complexity 0)=0A= +=0A= +Final cost 32 (complexity 0)=0A= +=0A= +Selected IV set for loop 2 at fp_foo.c:9, 10 avg niters, 2 IVs:=0A= +Candidate 4:=0A= + Var befor: j_51=0A= + Var after: j_30=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: i_50 + 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 9:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.37_69=0A= + Var after: ivtmp.37_68=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: sizetype=0A= + Base: ((sizetype) ((i_50 + 1) * m_25(D)) + (sizetype) i_50) * 4=0A= + Step: (sizetype) m_25(D) * 4=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +Replacing exit test: if (n_23(D) > j_30)=0A= +;;=0A= +;; Loop 1=0A= +;; header 4, latch 11=0A= +;; depth 1, outer 0, finite_p=0A= +;; niter (unsigned int) n_23(D) + 4294967294=0A= +;; upper_bound 2147483645=0A= +;; likely_upper_bound 2147483645=0A= +;; iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 605787 (estimated locally, freq 0.8900)=0A= +;; nodes: 4 11 5 15 17 9 8 13 7 12 6=0A= +Processing loop 1 at fp_foo.c:8=0A= + single exit 5 -> 16, exit condition if (j_24 < _45)=0A= +=0A= +=0A= +=0A= +Loops in function: dgefa=0A= +loop_0 (header =3D 0, latch =3D 1)=0A= +{=0A= + bb_2 (preds =3D {bb_0 }, succs =3D {bb_10 bb_14 })=0A= + {=0A= + [local count: 1804255]:=0A= + _45 =3D n_23(D) + -1;=0A= + if (n_23(D) > 1)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_14 (preds =3D {bb_2 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 198468]:=0A= +=0A= + }=0A= + bb_3 (preds =3D {bb_14 bb_16 }, succs =3D {bb_1 })=0A= + {=0A= + [local count: 1804255]:=0A= + # .MEM_88 =3D PHI <.MEM_22(D)(14), .MEM_53(16)>=0A= + # VUSE <.MEM_88>=0A= + return;=0A= +=0A= + }=0A= + bb_10 (preds =3D {bb_2 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_16 (preds =3D {bb_5 }, succs =3D {bb_3 })=0A= + {=0A= + [local count: 1605787]:=0A= + # .MEM_53 =3D PHI <.MEM_89(5)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_1 (header =3D 4, latch =3D 11, finite_p=0A= + niter (unsigned int) n_23(D) + 4294967294=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:160= 5787 (estimated locally, freq 0.8900))=0A= + {=0A= + bb_4 (preds =3D {bb_11 bb_10 }, succs =3D {bb_6 bb_15 })=0A= + {=0A= + [local count: 14598063]:=0A= + # i_50 =3D PHI =0A= + # .MEM_54 =3D PHI <.MEM_89(11), .MEM_22(D)(10)>=0A= + j_24 =3D i_50 + 1;=0A= + if (n_23(D) > j_24)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_15 (preds =3D {bb_4 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 1605787]:=0A= +=0A= + }=0A= + bb_5 (preds =3D {bb_15 bb_17 }, succs =3D {bb_11 bb_16 })=0A= + {=0A= + [local count: 14598063]:=0A= + # .MEM_89 =3D PHI <.MEM_54(15), .MEM_86(17)>=0A= + if (j_24 < _45)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_11 (preds =3D {bb_5 }, succs =3D {bb_4 })=0A= + {=0A= + [local count: 12992276]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + bb_6 (preds =3D {bb_4 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 12992276]:=0A= + _6 =3D m_25(D) * i_50;=0A= + _7 =3D _6 + i_50;=0A= + _8 =3D (sizetype) _7;=0A= + _9 =3D _8 + 1;=0A= + _10 =3D _9 * 4;=0A= + _87 =3D n_23(D) - j_24;=0A= + _67 =3D (sizetype) m_25(D);=0A= + _66 =3D _67 * 4;=0A= + _64 =3D i_50 + 1;=0A= + _63 =3D m_25(D) * _64;=0A= + _62 =3D (sizetype) _63;=0A= + _61 =3D (sizetype) i_50;=0A= + _60 =3D _61 + _62;=0A= + ivtmp.37_65 =3D _60 * 4;=0A= +=0A= + }=0A= + bb_17 (preds =3D {bb_9 }, succs =3D {bb_5 })=0A= + {=0A= + [local count: 12992276]:=0A= + # .MEM_86 =3D PHI <.MEM_55(9)>=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_2 (header =3D 7, latch =3D 12, finite_p=0A= + niter ((unsigned int) n_23(D) - (unsigned int) i_50) - 2=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 8.090909 (unreliable, maybe flat) entry count:1= 2992276 (estimated locally, freq 7.2009))=0A= + {=0A= + bb_7 (preds =3D {bb_12 bb_6 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 118111600]:=0A= + # j_51 =3D PHI =0A= + # .MEM_52 =3D PHI <.MEM_55(12), .MEM_54(6)>=0A= + # ivtmp.37_69 =3D PHI =0A= + _1 =3D m_25(D) * j_51;=0A= + _2 =3D _1 + l_26(D);=0A= + _3 =3D (long unsigned int) _2;=0A= + _4 =3D _3 * 4;=0A= + _5 =3D vector_27(D) + _4;=0A= + _59 =3D (sizetype) i_50;=0A= + _58 =3D _59 * 18446744073709551612;=0A= + _49 =3D (sizetype) l_26(D);=0A= + _48 =3D _49 * 4;=0A= + _47 =3D _48 + _58;=0A= + _46 =3D vector_27(D) + _47;=0A= + _44 =3D _46 + ivtmp.37_69;=0A= + # VUSE <.MEM_52>=0A= + t_28 =3D MEM[(float *)_44];=0A= + _11 =3D _1 + i_50;=0A= + _12 =3D (sizetype) _11;=0A= + _13 =3D _12 + 1;=0A= + _14 =3D ivtmp.37_69 + 4;=0A= + _82 =3D (sizetype) _7;=0A= + _81 =3D _82 + 1;=0A= + _80 =3D _81 * 4;=0A= + _79 =3D vector_27(D) + _80;=0A= + ivtmp.23_83 =3D (unsigned long) _79;=0A= +=0A= + }=0A= + bb_9 (preds =3D {bb_8 }, succs =3D {bb_12 bb_17 })=0A= + {=0A= + [local count: 118111600]:=0A= + # .MEM_55 =3D PHI <.MEM_42(8)>=0A= + j_30 =3D j_51 + 1;=0A= + ivtmp.37_68 =3D ivtmp.37_69 + _66;=0A= + if (j_30 !=3D n_23(D))=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_12 (preds =3D {bb_9 }, succs =3D {bb_7 })=0A= + {=0A= + [local count: 105119324]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + loop_3 (header =3D 8, latch =3D 13, finite_p=0A= + niter _87 > 0 ? (unsigned int) _87 + 4294967295 : 0=0A= + upper_bound 2147483645=0A= + likely_upper_bound 2147483645=0A= + iterations by profile: 7.090909 (unreliable, maybe flat) entry count= :118111600 (estimated locally, freq 65.4628))=0A= + {=0A= + bb_8 (preds =3D {bb_13 bb_7 }, succs =3D {bb_13 bb_9 })=0A= + {=0A= + [local count: 955630225]:=0A= + # i_56 =3D PHI =0A= + # .MEM_57 =3D PHI <.MEM_42(13), .MEM_52(7)>=0A= + # ivtmp.23_85 =3D PHI =0A= + _32 =3D (long unsigned int) i_56;=0A= + _33 =3D _32 * 4;=0A= + _21 =3D _10 + _33;=0A= + _34 =3D vector_27(D) + _21;=0A= + _78 =3D (void *) ivtmp.23_85;=0A= + # VUSE <.MEM_57>=0A= + _35 =3D MEM[(float *)_78];=0A= + _29 =3D _14 + _33;=0A= + _36 =3D vector_27(D) + _29;=0A= + _76 =3D (sizetype) _7;=0A= + _75 =3D _76 * 18446744073709551612;=0A= + _74 =3D _75 + ivtmp.23_85;=0A= + _73 =3D (void *) _74;=0A= + _72 =3D (sizetype) _11;=0A= + _71 =3D ivtmp.37_69;=0A= + _70 =3D _73 + _71;=0A= + # VUSE <.MEM_57>=0A= + _37 =3D MEM[(float *)_70];=0A= + _38 =3D t_28 * _37;=0A= + _39 =3D _35 + _38;=0A= + _77 =3D (void *) ivtmp.23_85;=0A= + # .MEM_42 =3D VDEF <.MEM_57>=0A= + MEM[(float *)_77] =3D _39;=0A= + i_40 =3D i_56 + 1;=0A= + ivtmp.23_84 =3D ivtmp.23_85 + 4;=0A= + if (i_40 < _87)=0A= + goto ; [89.00%]=0A= + else=0A= + goto ; [11.00%]=0A= +=0A= + }=0A= + bb_13 (preds =3D {bb_8 }, succs =3D {bb_8 })=0A= + {=0A= + [local count: 850510901]:=0A= + goto ; [100.00%]=0A= +=0A= + }=0A= + }=0A= + }=0A= + }=0A= +}=0A= +Analyzing # of iterations of loop 1=0A= + exit condition [1, + , 1](no_overflow) < n_23(D) + -1=0A= + bounds on difference of bases: 0 ... 2147483645=0A= + result:=0A= + # of iterations (unsigned int) n_23(D) + 4294967294, bounded by 214748= 3645=0A= + number of iterations (unsigned int) n_23(D) + 4294967294=0A= +=0A= +:=0A= +IV struct:=0A= + SSA_NAME: _6=0A= + Type: int=0A= + Base: 0=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _7=0A= + Type: int=0A= + Base: 0=0A= + Step: (int) ((unsigned int) m_25(D) + 1)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: j_24=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _46=0A= + Type: float *=0A= + Base: vector_27(D) + (sizetype) l_26(D) * 4=0A= + Step: 18446744073709551612=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _47=0A= + Type: sizetype=0A= + Base: (sizetype) l_26(D) * 4=0A= + Step: 18446744073709551612=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: i_50=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _58=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 18446744073709551612=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _59=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _61=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _63=0A= + Type: int=0A= + Base: m_25(D)=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +IV struct:=0A= + SSA_NAME: _64=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +IV struct:=0A= + SSA_NAME: _87=0A= + Type: int=0A= + Base: n_23(D) + -1=0A= + Step: -1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +:=0A= +Group 0:=0A= + Type: COMPARE=0A= + Use 0.0:=0A= + At stmt: if (n_23(D) > j_24)=0A= + At pos: j_24=0A= + IV struct:=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 1:=0A= + Type: COMPARE=0A= + Use 1.0:=0A= + At stmt: if (j_24 < _45)=0A= + At pos: j_24=0A= + IV struct:=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 2:=0A= + Type: GENERIC=0A= + Use 2.0:=0A= + At stmt: _7 =3D _6 + i_50;=0A= + At pos: =0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: (int) ((unsigned int) m_25(D) + 1)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 3:=0A= + Type: COMPARE=0A= + Use 3.0:=0A= + At stmt: if (i_40 < _87)=0A= + At pos: _87=0A= + IV struct:=0A= + Type: int=0A= + Base: n_23(D) + -1=0A= + Step: -1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 4:=0A= + Type: GENERIC=0A= + Use 4.0:=0A= + At stmt: j_24 =3D i_50 + 1;=0A= + At pos: =0A= + IV struct:=0A= + Type: int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 5:=0A= + Type: GENERIC=0A= + Use 5.0:=0A= + At stmt: _46 =3D vector_27(D) + _47;=0A= + At pos: =0A= + IV struct:=0A= + Type: float *=0A= + Base: vector_27(D) + (sizetype) l_26(D) * 4=0A= + Step: 18446744073709551612=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 6:=0A= + Type: GENERIC=0A= + Use 6.0:=0A= + At stmt: i_50 =3D PHI =0A= + At pos: =0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: Y=0A= + Overflowness wrto loop niter: No-overflow=0A= +Group 7:=0A= + Type: GENERIC=0A= + Use 7.0:=0A= + At stmt: _63 =3D m_25(D) * _64;=0A= + At pos: =0A= + IV struct:=0A= + Type: int=0A= + Base: m_25(D)=0A= + Step: m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Group 8:=0A= + Type: GENERIC=0A= + Use 8.0:=0A= + At stmt: _61 =3D (sizetype) i_50;=0A= + At pos: =0A= + IV struct:=0A= + Type: sizetype=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +=0A= +Predict doloop failure due to target specific checks.=0A= +Candidate 0:=0A= + Var befor: ivtmp.39=0A= + Var after: ivtmp.39=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 1:=0A= + Var befor: ivtmp.40=0A= + Var after: ivtmp.40=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 2:=0A= + Var befor: ivtmp.41=0A= + Var after: ivtmp.41=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 1=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 3:=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.42=0A= + Var after: ivtmp.42=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: (unsigned int) m_25(D) + 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Var befor: ivtmp.43=0A= + Var after: ivtmp.43=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) (n_23(D) + -1)=0A= + Step: 4294967295=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 6:=0A= + Var befor: ivtmp.44=0A= + Var after: ivtmp.44=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) n_23(D)=0A= + Step: 4294967295=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 7:=0A= + Var befor: ivtmp.45=0A= + Var after: ivtmp.45=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + (sizetype) l_26(D) * 4)=0A= + Step: 18446744073709551612=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 8:=0A= + Var befor: ivtmp.46=0A= + Var after: ivtmp.46=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) m_25(D)=0A= + Step: (unsigned int) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +: 0, 1, 2, 3,=0A= +=0A= + Related:=0A= + Group 0: 0, 1, 2, 3=0A= + Group 1: 0, 1, 2, 3=0A= + Group 2: 0, 1, 2, 3, 4=0A= + Group 3: 0, 1, 2, 3, 5, 6=0A= + Group 4: 0, 1, 2, 3=0A= + Group 5: 0, 1, 2, 3, 7=0A= + Group 6: 0, 1, 2, 3=0A= + Group 7: 0, 1, 2, 3, 8=0A= + Group 8: 0, 1, 2, 3=0A= +=0A= +:=0A= + cand cost=0A= + 0 5=0A= + 1 5=0A= + 2 5=0A= + 3 4=0A= + 4 5=0A= + 5 5=0A= + 6 5=0A= + 7 6=0A= + 8 5=0A= +=0A= +Scaling cost based on bb prob by 20.00: 4 (scratch: 0) -> 80=0A= +Scaling cost based on bb prob by 20.00: 4 (scratch: 0) -> 80=0A= +Scaling cost based on bb prob by 20.00: 4 (scratch: 0) -> 80=0A= +Scaling cost based on bb prob by 20.00: 4 (scratch: 0) -> 80=0A= +Scaling cost based on bb prob by 20.00: 0 (scratch: 0) -> 0=0A= +Scaling cost based on bb prob by 20.00: 4 (scratch: 0) -> 80=0A= +Scaling cost based on bb prob by 2.00: 9 (scratch: 1) -> 17=0A= +Scaling cost based on bb prob by 2.00: 0 (scratch: 0) -> 0=0A= +=0A= +:=0A= +Inv 1: n_23(D)=0A= +Inv 4: m_25(D)=0A= +Inv 5: l_26(D)=0A= +Inv 3: vector_27(D)=0A= +Inv 2: _45 (eliminable)=0A= +=0A= +:=0A= +inv_expr 1: (unsigned int) m_25(D) + 1=0A= +inv_expr 2: (signed int) n_23(D) + 1=0A= +inv_expr 3: (signed int) n_23(D) + -1=0A= +inv_expr 4: (signed long) l_26(D) * 4 + (signed long) vector_27(D)=0A= +=0A= +:=0A= +Group 0:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 4 0 NIL; NIL;=0A= + 1 4 0 NIL; NIL;=0A= + 2 0 0 NIL; NIL;=0A= + 3 0 0 NIL; NIL;=0A= + 5 4 0 NIL; NIL;=0A= + 6 4 0 2; NIL;=0A= +=0A= +Group 1:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 0 0 NIL; NIL;=0A= + 1 0 0 NIL; 2=0A= + 2 0 0 NIL; NIL;=0A= + 3 0 0 NIL; NIL;=0A= + 5 0 0 NIL; NIL;=0A= + 6 0 0 NIL; NIL;=0A= + 7 3 0 NIL; NIL;=0A= +=0A= +Group 2:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 4 0 0 NIL; NIL;=0A= +=0A= +Group 3:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 80 0 3; NIL;=0A= + 1 80 0 3; NIL;=0A= + 2 80 0 NIL; NIL;=0A= + 3 80 0 NIL; NIL;=0A= + 5 0 0 NIL; NIL;=0A= + 6 80 0 NIL; NIL;=0A= +=0A= +Group 4:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 4 0 NIL; NIL;=0A= + 1 4 0 NIL; NIL;=0A= + 2 0 0 NIL; NIL;=0A= + 3 0 0 NIL; NIL;=0A= + 5 4 0 NIL; NIL;=0A= + 6 4 0 2; NIL;=0A= +=0A= +Group 5:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 17 0 4; NIL;=0A= + 7 0 0 NIL; NIL;=0A= +=0A= +Group 6:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 0 0 0 NIL; NIL;=0A= + 1 0 0 NIL; NIL;=0A= + 2 4 0 NIL; NIL;=0A= + 3 0 0 NIL; NIL;=0A= + 5 4 0 3; NIL;=0A= + 6 4 0 NIL; NIL;=0A= +=0A= +Group 7:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 8 0 0 NIL; NIL;=0A= +=0A= +Group 8:=0A= + cand cost compl. inv.expr. inv.vars=0A= + 1 0 0 NIL; NIL;=0A= +=0A= +=0A= +:=0A= + target_avail_regs 26=0A= + target_clobbered_regs 16=0A= + target_reg_cost 4=0A= + target_spill_cost 24=0A= + regs_used 4=0A= + cost for size:=0A= + ivs cost=0A= + 0 0=0A= + 1 2=0A= + 2 4=0A= + 3 6=0A= + 4 8=0A= + 5 10=0A= + 6 12=0A= + 7 14=0A= + 8 16=0A= + 9 18=0A= + 10 20=0A= + 11 22=0A= + 12 24=0A= + 13 26=0A= + 14 28=0A= + 15 30=0A= + 16 32=0A= + 17 34=0A= + 18 36=0A= + 19 111=0A= + 20 116=0A= + 21 121=0A= + 22 126=0A= + 23 151=0A= + 24 176=0A= + 25 201=0A= + 26 226=0A= + 27 275=0A= + 28 324=0A= + 29 373=0A= + 30 422=0A= + 31 471=0A= + 32 520=0A= + 33 569=0A= + 34 618=0A= + 35 667=0A= + 36 716=0A= + 37 765=0A= + 38 814=0A= + 39 863=0A= + 40 912=0A= + 41 961=0A= + 42 1010=0A= + 43 1059=0A= + 44 1108=0A= + 45 1157=0A= + 46 1206=0A= + 47 1255=0A= + 48 1304=0A= + 49 1353=0A= + 50 1402=0A= + 51 1451=0A= + 52 1500=0A= +=0A= +Initial set of candidates:=0A= + cost: 126 (complexity 0)=0A= + reg_cost: 10=0A= + cand_cost: 19=0A= + cand_group_cost: 97 (complexity 0)=0A= + candidates: 1, 3, 4, 8=0A= + group:0 --> iv_cand:3, cost=3D(0,0)=0A= + group:1 --> iv_cand:3, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:3, cost=3D(80,0)=0A= + group:4 --> iv_cand:3, cost=3D(0,0)=0A= + group:5 --> iv_cand:1, cost=3D(17,0)=0A= + group:6 --> iv_cand:3, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1, 4=0A= +=0A= +Improved to:=0A= + cost: 53 (complexity 0)=0A= + reg_cost: 12=0A= + cand_cost: 24=0A= + cand_group_cost: 17 (complexity 0)=0A= + candidates: 1, 3, 4, 5, 8=0A= + group:0 --> iv_cand:3, cost=3D(0,0)=0A= + group:1 --> iv_cand:3, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:5, cost=3D(0,0)=0A= + group:4 --> iv_cand:3, cost=3D(0,0)=0A= + group:5 --> iv_cand:1, cost=3D(17,0)=0A= + group:6 --> iv_cand:3, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1, 4=0A= +=0A= +Improved to:=0A= + cost: 43 (complexity 0)=0A= + reg_cost: 13=0A= + cand_cost: 30=0A= + cand_group_cost: 0 (complexity 0)=0A= + candidates: 1, 3, 4, 5, 7, 8=0A= + group:0 --> iv_cand:3, cost=3D(0,0)=0A= + group:1 --> iv_cand:3, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:5, cost=3D(0,0)=0A= + group:4 --> iv_cand:3, cost=3D(0,0)=0A= + group:5 --> iv_cand:7, cost=3D(0,0)=0A= + group:6 --> iv_cand:3, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1=0A= +=0A= +Initial set of candidates:=0A= + cost: 55 (complexity 0)=0A= + reg_cost: 10=0A= + cand_cost: 20=0A= + cand_group_cost: 25 (complexity 0)=0A= + candidates: 1, 4, 5, 8=0A= + group:0 --> iv_cand:5, cost=3D(4,0)=0A= + group:1 --> iv_cand:5, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:5, cost=3D(0,0)=0A= + group:4 --> iv_cand:5, cost=3D(4,0)=0A= + group:5 --> iv_cand:1, cost=3D(17,0)=0A= + group:6 --> iv_cand:1, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1, 4=0A= +=0A= +Improved to:=0A= + cost: 45 (complexity 0)=0A= + reg_cost: 11=0A= + cand_cost: 26=0A= + cand_group_cost: 8 (complexity 0)=0A= + candidates: 1, 4, 5, 7, 8=0A= + group:0 --> iv_cand:5, cost=3D(4,0)=0A= + group:1 --> iv_cand:5, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:5, cost=3D(0,0)=0A= + group:4 --> iv_cand:5, cost=3D(4,0)=0A= + group:5 --> iv_cand:7, cost=3D(0,0)=0A= + group:6 --> iv_cand:1, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1=0A= +=0A= +Improved to:=0A= + cost: 43 (complexity 0)=0A= + reg_cost: 13=0A= + cand_cost: 30=0A= + cand_group_cost: 0 (complexity 0)=0A= + candidates: 1, 3, 4, 5, 7, 8=0A= + group:0 --> iv_cand:3, cost=3D(0,0)=0A= + group:1 --> iv_cand:3, cost=3D(0,0)=0A= + group:2 --> iv_cand:4, cost=3D(0,0)=0A= + group:3 --> iv_cand:5, cost=3D(0,0)=0A= + group:4 --> iv_cand:3, cost=3D(0,0)=0A= + group:5 --> iv_cand:7, cost=3D(0,0)=0A= + group:6 --> iv_cand:3, cost=3D(0,0)=0A= + group:7 --> iv_cand:8, cost=3D(0,0)=0A= + group:8 --> iv_cand:1, cost=3D(0,0)=0A= + invariant variables: =0A= + invariant expressions: 1=0A= +=0A= +Original cost 43 (complexity 0)=0A= +=0A= +Final cost 43 (complexity 0)=0A= +=0A= +Selected IV set for loop 1 at fp_foo.c:8, 10 avg niters, 6 IVs:=0A= +Candidate 1:=0A= + Var befor: ivtmp.40_43=0A= + Var after: ivtmp.40_41=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 3:=0A= + Var befor: i_50=0A= + Var after: j_24=0A= + Incr POS: orig biv=0A= + IV struct:=0A= + Type: int=0A= + Base: 0=0A= + Step: 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: No-overflow=0A= +Candidate 4:=0A= + Depend on inv.exprs: 1=0A= + Var befor: ivtmp.42_31=0A= + Var after: ivtmp.42_20=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: 0=0A= + Step: (unsigned int) m_25(D) + 1=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 5:=0A= + Var befor: ivtmp.43_17=0A= + Var after: ivtmp.43_16=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) (n_23(D) + -1)=0A= + Step: 4294967295=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 7:=0A= + Var befor: ivtmp.45_91=0A= + Var after: ivtmp.45_92=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned long=0A= + Base: (unsigned long) (vector_27(D) + (sizetype) l_26(D) * 4)=0A= + Step: 18446744073709551612=0A= + Object: (void *) vector_27(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +Candidate 8:=0A= + Var befor: ivtmp.46_97=0A= + Var after: ivtmp.46_98=0A= + Incr POS: before exit test=0A= + IV struct:=0A= + Type: unsigned int=0A= + Base: (unsigned int) m_25(D)=0A= + Step: (unsigned int) m_25(D)=0A= + Biv: N=0A= + Overflowness wrto loop niter: Overflow=0A= +=0A= +Replacing exit test: if (j_24 < _45)=0A= diff --git a/gcc/testsuite/fp_foo.c b/gcc/testsuite/fp_foo.c=0A= new file mode 100644=0A= index 00000000000..f65f43d6435=0A= --- /dev/null=0A= +++ b/gcc/testsuite/fp_foo.c=0A= @@ -0,0 +1,19 @@=0A= +=0A= +void daxpy(float *vector1, float *vector2, int n, float fp_const){=0A= + for (int i =3D 0; i < n; ++i)=0A= + vector1[i] +=3D fp_const * vector2[i];=0A= +}=0A= +=0A= +void dgefa(float *vector, int m, int n, int l){=0A= + for (int i =3D 0; i < n - 1; ++i){=0A= + for (int j =3D i + 1; j < n; ++j){=0A= + float t =3D vector[m * j + l];=0A= + daxpy(&vector[m * i + i + 1],=0A= + &vector[m * j + i + 1], n - (i + 1), t);=0A= + }=0A= + }=0A= +}=0A= +=0A= +int main(){=0A= + return 0;=0A= +}=0A= diff --git a/gcc/testsuite/test_script.sh b/gcc/testsuite/test_script.sh=0A= new file mode 100644=0A= index 00000000000..4f19d248efe=0A= --- /dev/null=0A= +++ b/gcc/testsuite/test_script.sh=0A= @@ -0,0 +1,10 @@=0A= +export PREFIX=3D"/home/syrmia/Desktop/Aleksandar/GNU_toolchain/install"=0A= +export SOURCE_DIR=3D"/home/syrmia/Desktop/Aleksandar/GNU_toolchain/source"= =0A= +export BUILD_DIR=3D"/home/syrmia/Desktop/Aleksandar/GNU_toolchain/build"= =0A= +export SYSROOT=3D"/home/syrmia/Desktop/Aleksandar/GNU_toolchain/install/sy= s_root"=0A= +export PATH=3D$PREFIX/bin:$PATH=0A= +export TARGET=3Dmips64-r6-linux-gnu=0A= +=0A= +=0A= +$PREFIX/bin/mips64-r6-linux-gnu-gcc fp_foo.c -O2 >out.txt -S -o fp_foo.s -= march=3Dmips64r6 -mabi=3D64=0A= +=0A= diff --git a/gcc/tree-ssa-loop-ivopts.cc b/gcc/tree-ssa-loop-ivopts.cc=0A= index 7cae5bdefea..2dec5001dca 100644=0A= --- a/gcc/tree-ssa-loop-ivopts.cc=0A= +++ b/gcc/tree-ssa-loop-ivopts.cc=0A= @@ -4724,7 +4724,8 @@ get_address_cost (struct ivopts_data *data, struct iv= _use *use,=0A= rtx addr;=0A= bool simple_inv =3D true;=0A= tree comp_inv =3D NULL_TREE, type =3D aff_var->type;=0A= - comp_cost var_cost =3D no_cost, cost =3D no_cost;=0A= + comp_cost var_cost =3D no_cost, cost =3D no_cost, autoinc_cost =3D no_co= st;=0A= + comp_cost acost =3D no_cost;=0A= struct mem_address parts =3D {NULL_TREE, integer_one_node,=0A= NULL_TREE, NULL_TREE, NULL_TREE};=0A= machine_mode addr_mode =3D TYPE_MODE (type);=0A= @@ -4755,38 +4756,36 @@ get_address_cost (struct ivopts_data *data, struct = iv_use *use,=0A= if (!ok_with_ratio_p)=0A= parts.step =3D NULL_TREE;=0A= }=0A= - if (ok_with_ratio_p || ok_without_ratio_p)=0A= + if (!(ok_with_ratio_p || ok_without_ratio_p))=0A= + parts.index =3D NULL_TREE;=0A= +=0A= + if (maybe_ne (aff_inv->offset, 0))=0A= {=0A= - if (maybe_ne (aff_inv->offset, 0))=0A= - {=0A= - parts.offset =3D wide_int_to_tree (sizetype, aff_inv->offset);=0A= - /* Addressing mode "base + index [<< scale] + offset". */=0A= - if (!valid_mem_ref_p (mem_mode, as, &parts, code))=0A= - parts.offset =3D NULL_TREE;=0A= - else=0A= - aff_inv->offset =3D 0;=0A= - }=0A= + parts.offset =3D wide_int_to_tree (sizetype, aff_inv->offset);=0A= + /* Addressing mode "base + index[<< scale] + offset". */=0A= + if (!valid_mem_ref_p (mem_mode, as, &parts, code))=0A= + parts.offset =3D NULL_TREE;=0A= + else=0A= + aff_inv->offset =3D 0;=0A= + }=0A= =0A= - move_fixed_address_to_symbol (&parts, aff_inv);=0A= - /* Base is fixed address and is moved to symbol part. */=0A= - if (parts.symbol !=3D NULL_TREE && aff_combination_zero_p (aff_inv))=0A= - parts.base =3D NULL_TREE;=0A= + move_fixed_address_to_symbol (&parts, aff_inv);=0A= + /* Base is fixed address and is moved to symbol part. */=0A= + if (parts.symbol !=3D NULL_TREE && aff_combination_zero_p (aff_inv))= =0A= + parts.base =3D NULL_TREE;=0A= =0A= - /* Addressing mode "symbol + base + index [<< scale] [+ offset]". */= =0A= - if (parts.symbol !=3D NULL_TREE=0A= - && !valid_mem_ref_p (mem_mode, as, &parts, code))=0A= - {=0A= - aff_combination_add_elt (aff_inv, parts.symbol, 1);=0A= - parts.symbol =3D NULL_TREE;=0A= - /* Reset SIMPLE_INV since symbol address needs to be computed=0A= - outside of address expression in this case. */=0A= - simple_inv =3D false;=0A= - /* Symbol part is moved back to base part, it can't be NULL. */=0A= - parts.base =3D integer_one_node;=0A= - }=0A= + /* Addressing mode "symbol + base + index[<< scale] [+ offset]". */= =0A= + if (parts.symbol !=3D NULL_TREE=0A= + && !valid_mem_ref_p (mem_mode, as, &parts, code))=0A= + {=0A= + aff_combination_add_elt (aff_inv, parts.symbol, 1);=0A= + parts.symbol =3D NULL_TREE;=0A= + /* Reset SIMPLE_INV since symbol address needs to be computed=0A= + outside of address expression in this case. */=0A= + simple_inv =3D false;=0A= + /* Symbol part is moved back to base part, it can't be NULL. */=0A= + parts.base =3D integer_one_node;=0A= }=0A= - else=0A= - parts.index =3D NULL_TREE;=0A= }=0A= else=0A= {=0A= @@ -4799,14 +4798,12 @@ get_address_cost (struct ivopts_data *data, struct = iv_use *use,=0A= =0A= if (stmt_after_increment (data->current_loop, cand, use->stmt))=0A= ainc_offset +=3D ainc_step;=0A= - cost =3D get_address_cost_ainc (ainc_step, ainc_offset,=0A= + autoinc_cost =3D get_address_cost_ainc (ainc_step, ainc_offset,=0A= addr_mode, mem_mode, as, speed);=0A= - if (!cost.infinite_cost_p ())=0A= - {=0A= - *can_autoinc =3D true;=0A= - return cost;=0A= - }=0A= - cost =3D no_cost;=0A= + if (!autoinc_cost.infinite_cost_p ())=0A= + *can_autoinc =3D true;=0A= + else=0A= + autoinc_cost =3D no_cost;=0A= }=0A= if (!aff_combination_zero_p (aff_inv))=0A= {=0A= @@ -4852,10 +4849,13 @@ get_address_cost (struct ivopts_data *data, struct = iv_use *use,=0A= cost +=3D var_cost;=0A= addr =3D addr_for_mem_ref (&parts, as, false);=0A= gcc_assert (memory_address_addr_space_p (mem_mode, addr, as));=0A= - cost +=3D address_cost (addr, mem_mode, as, speed);=0A= + acost +=3D address_cost (addr, mem_mode, as, speed);=0A= =0A= if (parts.symbol !=3D NULL_TREE)=0A= cost.complexity +=3D 1;=0A= + /* var_present. */=0A= + else if (!aff_combination_const_p (aff_inv))=0A= + cost.complexity +=3D 1;=0A= /* Don't increase the complexity of adding a scaled index if it's=0A= the only kind of index that the target allows. */=0A= if (parts.step !=3D NULL_TREE && ok_without_ratio_p)=0A= @@ -4865,6 +4865,7 @@ get_address_cost (struct ivopts_data *data, struct iv= _use *use,=0A= if (parts.offset !=3D NULL_TREE && !integer_zerop (parts.offset))=0A= cost.complexity +=3D 1;=0A= =0A= + cost +=3D (can_autoinc && *can_autoinc) ? autoinc_cost : acost;=0A= return cost;=0A= }=0A= =0A= -- =0A= 2.34.1=0A=