https://llvm.org/bugs/show_bug.cgi?id=26757

            Bug ID: 26757
           Summary: [WinEH] invalid exception object in catch handler
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: unassignedb...@nondot.org
          Reporter: r.sagita...@gmx.de
                CC: llvm-bugs@lists.llvm.org
    Classification: Unclassified

The attached IR is generated by enabling optimization in the D compiler, but
generates code that crashes in the continuation of the catch handler because
the exception object is invalid.

The stack offset for the exception object in the handlerMap is 0, see the
respective asm:

$handlerMap$0$__D3enf15__unittestL11_1FZv:
    .long    0
    .long    _Dobject.Exception@TypeDescriptor
    .long    0
    .long    "?catch$4@?0?__D3enf15__unittestL11_1FZv@4HA" 

This is rejected by the VC runtime in int __BuildCatchObjectHelper(),
HT_DISPCATCH(*pCatch) is 0:

    // If the catch is by ellipsis, then there is no object to construct.
    // If the catch is by type(No Catch Object), then leave too!
    if (HT_IS_TYPE_ELLIPSIS(*pCatch) ||
        (!HT_DISPCATCH(*pCatch) && !HT_ISCOMPLUSEH(*pCatch))) {
        EHTRACE_EXIT;
        return 0;
    }

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to