This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/16586] [3.3/3.4 Regression] -O3 -fno-gcse ICE verify_local_live_at_start flow.c:575


------- Additional Comments From ebotcazou at gcc dot gnu dot org  2004-12-02 07:11 -------
This one is really tricky to fix: this is the classical case in which the return
value register's liveness propagates backwards until an unrelated use/clobber of
the register is encountered.  This works more or less until the regrename pass,
which locally renames the register in the latter def/use/clobber chain; so the
return value register's liveness is not masked anymore and propagates back to
the start of the basic block.  But, after reload, register liveness information
is not allowed to change at basic block boundaries so the compiler aborts on a
sanity check.

The easy workaround is to make sure that every code path in a function returning
a value really returns a value.


-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ebotcazou at gcc dot gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16586


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]