[Issue 10] ARM: runnable/opover2.d fails: xopEquals fallback aborts instead of throwing Exception

gdc-bugzilla at gdcproject.org gdc-bugzilla at gdcproject.org
Tue Sep 25 03:47:18 PDT 2012


http://gdcproject.org/bugzilla/show_bug.cgi?id=10

--- Comment #1 from Johannes Pfau <johannespfau at gmail.com> 2012-09-25 10:47:18 UTC ---
OK, this was indeed the cause. Removing pure nothrow from "equals_t equals" and
"equals_t function(in void*, in void*)   xopEquals;" fixes this issue. We could
hack this in druntime, but I think we need a more general solution.

Imho we shouldn't mark functions as nothrow in the backend if the complete
source code is not available: So: invoking a function via pointer / delegate =>
not nothrow. Invoking a nothrow function where we only have a definition in a
.di header => not nothrow. And if a function invokes other nothrow functions
these have to be checked for assertion / throw Error as well.

The same may apply to pure. Maybe there's a better solution, but it seems that
the dmd schizophrenia "throwing Errors in nothrow functions is OK" get's us
into trouble here, as GCC probably doesn't set up exception handling for
NOTHROW functions at all.

-- 
Configure issuemail: http://gdcproject.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all issue changes.


More information about the D.gnu mailing list