Summary: | [alpha-linux] gcc fails to compile kernel on wildfire | ||
---|---|---|---|
Product: | gcc | Reporter: | 172090 |
Component: | target | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | normal | CC: | falk.hueffner, gcc-bugs |
Priority: | P3 | Keywords: | ice-on-valid-code |
Version: | 3.2.2 | ||
Target Milestone: | --- | ||
Host: | Target: | alpha-linux | |
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2004-08-19 05:33:30 | |
Attachments: | bug-172090.i.gz |
Description
172090
2002-12-27 15:56:01 UTC
From: Falk Hueffner <falk.hueffner@student.uni-tuebingen.de> To: gcc-gnats@gcc.gnu.org, 172090@bugs.debian.org, gcc-bugs@gcc.gnu.org, herbert@gondor.apana.org.au Cc: Subject: Re: target/9074: [alpha-linux] gcc fails to compile kernel on wildfire Date: 10 Feb 2003 02:54:47 +0100 Hi, not quite sure what's going on, but the problem is still there in gcc version 3.4 20030203. Here's a smaller testcase: extern inline void copy_tofrom_user(long len) { register long pv asm("$27") = 0; register long cu_from asm("$7") = 0; asm volatile ("" : "=r"(len), "=r"(cu_from), "=r"(pv) : "0"(len), "1"(cu_from), "2"(pv)); } static void stli_memread(int *brdp) { copy_tofrom_user(1 % *brdp); } Looks like some conflict between the divmod pattern and the $27 asm. -- Falk See Falk's comment. You have to remove the static or add -fno-unit-at-a-time to the command line. Yes. It's unfortunate, but hard-coded register numbers get that way. The correct way to fix this is to use the new "c" register constraint and to not use $27 as an explicit asm register. I've had to make similar changes to glibc. I'll take care of getting this change pushed into the kernel. |