Article View: gnu.gcc.help
Article #50524gcc-2.4.5: 'fixed or forbidden register was spilled.' error
From: David Alan Gilbert
Date: Mon, 20 Sep 1993 13:34
Date: Mon, 20 Sep 1993 13:34
60 lines
3418 bytes
3418 bytes
Hi - I'm getting the error message:
fixed or forbidden register was spilled.
This may be due to a compiler bug or to impossible asm statements.
What I want to know is where to start looking for the problem!!
I've found it is generated on line 2189 of reload1.c and is caused by
TEST_HARD_REG_BIT (forbidden_regs, regno) being true. forbidden_regs=65535
and regno=12. Considering that there are only 16 registers on the processor
it seems strange that forbidden_regs=65535 (at 1 bit per register that means
they are all forbidden). After a bit of guessing about I looked in the
.greg file to find:
;; Function main
;; 19 regs to allocate: 72 89 100 99 83 90 78 101 73 79 91 31 92 153 29 77 33 59 34
;; 29 conflicts: 29 31 33 34 59 72 73 77 78 79 83 89 90 91 92 99 100 101 153 0 1 2 3 4 13 14
;; 31 conflicts: 29 31 33 34 59 77 78 79 83 89 90 91 153 0 1 2 3 13 14
;; 33 conflicts: 29 31 33 34 59 72 73 77 78 79 83 89 90 91 92 99 100 101 153 0 1 2 3 4 5 13 14
;; 34 conflicts: 29 31 33 34 59 72 73 77 78 79 83 89 90 91 92 99 100 101 153 0 1 2 3 4 5 13 14
;; 59 conflicts: 29 31 33 34 59 72 73 77 78 79 83 89 90 91 92 99 100 101 153 0 1 2 3 4 5 13 14
;; 72 conflicts: 29 33 34 59 72 99 101 13
;; 73 conflicts: 29 33 34 59 73 99 101 0 1 2 13
;; 77 conflicts: 29 31 33 34 59 77 78 79 83 89 90 91 92 0 1 2 3 13 14
;; 78 conflicts: 29 31 33 34 59 77 78 79 92 1 13
;; 78 preferences: 0
;; 79 conflicts: 29 31 33 34 59 77 78 79 92 13
;; 83 conflicts: 29 31 33 34 59 77 83 92 0 13
;; 89 conflicts: 29 31 33 34 59 77 89 90 91 92 0 1 2 3 13
;; 90 conflicts: 29 31 33 34 59 77 89 90 91 92 0 1 2 3 13
;; 91 conflicts: 29 31 33 34 59 77 89 90 91 92 0 1 2 3 13
;; 92 conflicts: 29 33 34 59 77 78 79 83 89 90 91 92 0 1 2 3 13 14
;; 99 conflicts: 29 33 34 59 72 73 99 1 2 13
;; 99 preferences: 0
;; 100 conflicts: 29 33 34 59 100 13
;; 100 preferences: 0
;; 101 conflicts: 29 33 34 59 72 73 101 0 1 2 4 13
;; 153 conflicts: 29 31 33 34 59 153 0 13
;; Need 1 reg of class GENERAL_REGS (for insn 12).
;; Need 1 reg of class ALL_REGS (for insn 12).
And that insn 12 is (according to the .combine file)
(insn 12 11 15 (set (mem:SI (reg:SI 36))
(mem/u:SI (symbol_ref/u:SI ("*LC3")))) 59 {movsi} (insn_list 11 (nil))
(nil))
which looks reasonably happy to me - what do I look at next?????
(It does worry me that is trying to find a register from ALL_REGS - I would
have thought it should only try GENERAL_REGS...)
As far as I can tell the only thing I did to precipitate this error message
was add definitions to cause data and constants to be aligned more tightly.
Dave
--
-------------------------------------------------------------------------------
- David Alan Gilbert - gilbertd@cs.man.ac.uk - G7FHJ@GB7CRG -
------(Programmers don't sleep - they just park their heads)-------------------
Technical Details
Message-ID:
<gilbertd.748532046@cs.man.ac.uk>Path:
arc1-ca.pugleaf.net!gmd.de!newsserver.jvnc.net!howland.reston.ans.net!pipex!bnr.co.uk!uknet!mucs!cs.man.ac.uk!gilbertdShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 11318c,d3e7a8bd6bdf80de,start X-Google-Attributes: gid11318c,public X-Google-ArrivalTime: 1993-09-20 18:11:15 PST Path: arc1-ca.pugleaf.net!gmd.de!newsserver.jvnc.net!howland.reston.ans.net!pipex!bnr.co.uk!uknet!mucs!cs.man.ac.uk!gilbertd From: gilbertd@cs.man.ac.uk (David Alan Gilbert) Newsgroups: gnu.gcc.help Subject: gcc-2.4.5: 'fixed or forbidden register was spilled.' error Message-ID: <gilbertd.748532046@cs.man.ac.uk> Date: 20 Sep 93 13:34:06 GMT Sender: news@cs.man.ac.uk Lines: 60