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 target/32338] [4.3 Regression] Error: .prologue within prologue



------- Comment #2 from jakub at gcc dot gnu dot org  2007-07-18 14:14 -------
The thing that changed is that new dataflow now allows moving around the
(set (r12) (something)) frame related instructions within EBBs during
scheduling
more easily.  These are generated for the sibcall epilogues before sibling
calls and also for epilogue before br.ret.
ia64.c unwind generation code assumes that the frame related r12 setting
insns say in the same BB (while scheduling works with EBBs) and emits .body and
.copy_state at the start of next BB after .label_state, but in this case we
want it another BB later.

I'll attach 3 possible fixes, one is to add blockage like we do for
current_frame_info.total_size != 0 or cfun->machine->ia64_eh_epilogue_sp
functions when we need frame pointer (and thus emit the r12 = something frame
related insn), the other is the same but only emit the blockage in sibcall
epilogues.  The last one I'm ATM bootstrapping/regtesting doesn't limit the
scheduling in anyway, instead adds a little state machine to control the
addition
of .label_state/.restore sp, .prologue, .body and .copy_state.  If that works,
it would e.g. also fix unnecessary .body directives when already in .body
region.


-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |wilson at gcc dot gnu dot
                   |                            |org
         AssignedTo|unassigned at gcc dot gnu   |jakub at gcc dot gnu dot org
                   |dot org                     |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2007-07-18 14:14:14
               date|                            |


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


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