Hi David,
This problem also exists on IA-64. I made a small change to you patch to fix
an assertion:
### Assertion failure at line 114 of
/export/home/laijx/trunk/ia64-debug/osprey/../../osprey/common/com/irbdata.h:
### Compiler Error in file 735.cxx during Multiple Branch phase:
### INITV read access error
Index: osprey/be/cg/eh_region.cxx
===================================================================
--- osprey/be/cg/eh_region.cxx (revision 3513)
+++ osprey/be/cg/eh_region.cxx (working copy)
@@ -1689,7 +1689,7 @@
for (INITV_IDX next = INITV_next(first); next; next = INITV_next(next))
{
// begin write action record (cinv, next)
int filter = 0;
- if (INITVKIND_ZERO != INITV_kind(next))
+ if (INITVKIND_VAL == INITV_kind(next))
filter = TCON_ival(INITV_tc_val(next));
if (filter > 0) { // handler
But this change doesn't fix this bug on IA-64. But I think you can check it
in at first. We can fix this problem on IA-64 after the 4.2.4 release.
2011/3/11 David Coakley <dcoak...@gmail.com>
> Could a gatekeeper please review the attached patch to fix bug 735:
> C++ exception handling introduces false catch-all ranges.
>
> This is a long-standing bug in C++ exception handling that leads to
> incorrect runtime behavior -- when there is a catch-all range and a
> cleanup range in the same region, the cg could incorrectly mark the
> cleanup range as having a catch-all handler as well. The bug is
> present at all optimization levels, although aggressive inlining tends
> to expose the bug more by creating more regions that meet the
> preconditions.
>
> The fundamental problem is that there is not enough information to
> distinguish the catch-all range from the cleanup range once we are in
> the cg. The fix introduces a special value to mark the catch-all in
> wgen, propagates this information where necessary, and then handles
> the special value in the cg with no ambiguity. The details are in the
> attached msg.txt file.
>
> I think that the test case in the bug report will fail on IA-64 for
> the same reason, and a similar change will need to be made for the
> IA-64 version of Create_INITO_For_Range_Table in the cg to complete
> the fix for that target. If someone with access to IA-64 hardware can
> provide that change, I will include it in the patch. Thanks,
>
> -David Coakley / AMD Open Source Compiler Engineering
>
>
> ------------------------------------------------------------------------------
> Colocation vs. Managed Hosting
> A question and answer guide to determining the best fit
> for your organization - today and in the future.
> http://p.sf.net/sfu/internap-sfd2d
> _______________________________________________
> Open64-devel mailing list
> Open64-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/open64-devel
>
>
--
Regards,
Lai Jian-Xin
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel