This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] prevents labels referenced in the exception table to be deleted
Here is the tiny patch, validated on i686-pc-linux-gnu and sh4-linux.
To recall, it fixes a bug exposed during the SH validation testsuite for
42841 on the trunk branch only
(23_containers/deque/requirements/exception/basic.cc failed with Error:
undefined symbol `.L3394' in operation). Note that Kaz as made a w/a in
the SH description to remove the regression in the current build.
In branches 4.3, 4.4 landing pad labels were correctly PRESERVED. So
this flags is lost since recently.
Only reorg calls delete_related_insn after the exception handling
tables, so this might has been left unnoticed for primary targets such
Landing pads for sjlj exceptions are correctly preserved. It is missing
only for dwarf2 exceptions.
OK ? It should be safe for the 4.5 but I understand to wait until stage
1 if necessary.
2010-02-12 Christian Bruel <firstname.lastname@example.org>
* except.c (dw2_build_landing_pads): set LABEL_PRESERVE_P.
--- except.c (revision 156703)
+++ except.c (working copy)
@@ -975,6 +975,8 @@
lp->landing_pad = gen_label_rtx ();
+ LABEL_PRESERVE_P (lp->landing_pad) = 1;
emit_insn (gen_exception_receiver ());