This is the mail archive of the gcc@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]

Problem in split_basic_block


This comes up compiling the Ada library for ia64/VMS with SJLJ exceptions
and flag_non_call_exceptions.

Suppose we have a block with a CALL_INSN.  Ity has a REG_EH_REGION note.
The ia64 splitter splits that up into a number of insns, some of which
are memory load insns.  Then split_insns copies the REG_EH_REGION note
to that load insn.

Now we try to split the block.  The code moves all edges to the new
block.  But that's wrong since there might have been an ABNORMAL_CALL
edge that depended on the last insn of the block being a CALL_INSN.
But the CALL_INSN is now in the previous block.

Suggestions?

I don't understand this stuff too well.


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