[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#880962: mips*: "gcc --help=target --help=optimizers" busyloops forever



Control: tags -1 patch

Hi,

On 07/11/17 13:45, James Cowgill wrote:
> Control: forwarded -1 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82880
> 
> Hi,
> 
> On 06/11/17 18:07, James Cowgill wrote:
>> On 06/11/17 12:11, Adrian Bunk wrote:
>>> Package: gcc-7
>>> Version: 7.2.0-12
>>> Severity: serious
>>> Control: affects -1 src:amanda
>>>
>>> https://buildd.debian.org/status/package.php?p=amanda&suite=sid
>>>
>>> ...
>>> checking for gcc flag -fstrict-aliasing... 
>>> E: Build killed with signal TERM after 360 minutes of inactivity
>>>
>>>
>>> Testcase:
>>>
>>> (sid_mips-dchroot)bunk@minkus:~$ gcc --help=target --help=optimizers  
>>
>> Bisected to this commit, but I don't know how far that helps us.
>> Probably some mips specific option blows up.
> 
> I've filed a bug upstream with some more details. Indeed a mips
> optimization pass being registered twice caused the infinite loop, but I
> currently think the mips specific code is being called incorrectly and
> there needs to be a generic fix.
> 
> I posted a workaround patch in the upstream bug report.

I was about to post the patch upstream, but I have just been reminded
that the FSF paperwork for the new MIPS company hasn't gone through yet
(since I don't work for Imagination anymore - it's all very fun), so I'm
not allowed to post it yet.

Here's what I was about to send.

James
From dcbbf8b94831616203731ee8be9b40817aa6695f Mon Sep 17 00:00:00 2001
From: James Cowgill <james.cowgill@mips.com>
Date: Tue, 14 Nov 2017 12:18:37 +0000
Subject: [PATCH] MIPS: remove static specifier from register_pass_info struct

This fixes PR 82880 (where gcc --help --help hangs) by ensuring that if
mips_register_frame_header_opt is called twice, the second call to
register_pass gets a different instance of register_pass_info.

2017-11-14  James Cowgill <james.cowgill@mips.com>

	PR target/82880
	* config/mips/frame-header-opt.c (mips_register_frame_header_opt):
	Remove static specifier from f.
---
 gcc/config/mips/frame-header-opt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/mips/frame-header-opt.c b/gcc/config/mips/frame-header-opt.c
index 76930792e92..0ebf377d046 100644
--- a/gcc/config/mips/frame-header-opt.c
+++ b/gcc/config/mips/frame-header-opt.c
@@ -99,7 +99,7 @@ void
 mips_register_frame_header_opt (void)
 {
   opt_pass *p = make_pass_ipa_frame_header_opt (g);
-  static struct register_pass_info f =
+  struct register_pass_info f =
     {p, "comdats", 1, PASS_POS_INSERT_AFTER };
   register_pass (&f);
 }
-- 
2.15.0

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: