Custom Query (146 matches)
Results (67 - 69 of 146)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#190 | fixed | Re-throw-resume incorrectly depends on enclosing function return type | ||
Description |
#ifdef WONT_WORK #define RETTYPE void #else #define RETTYPE int #endif #include <exception.hfa> TRIVIAL_EXCEPTION( CPU_Fire ); RETTYPE foo() { try { int x = 1 + 1; } catchResume ( CPU_Fire * ) { throwResume; } } -DWONT_WORK actual: compiler error at throwResume, from gcc: error: void value not ignored as it ought to be -DWONT_WORK expected, no-args actual: compiler success, linker error for no main
When the error happens, running gcc on -CFA output shows the error is coming from the _Bool handle(struct __cfaehm_base_exception_t *__exception_inst){ __attribute__ ((unused)) _Bool __ret_bool; { struct CPU_Fire *__anonymous_object2220; if ( (__anonymous_object2220=((struct CPU_Fire *)__cfa__virtual_cast(((const struct __cfa__parent_vtable *)(&_X25_CPU_Fire_vtable_instanceS15CPU_Fire_vtable_1)), ((const struct __cfa__parent_vtable **)__exception_inst)))) ) { return ((void)0); return 1; } } return 0; } |
|||
#224 | fixed | Cannot initialize static local constant | ||
Description |
Similar to #182, except here, the user's declaration is lexically scoped as local. int main() { static const char bar = -1; printf("done\n"); }
Expected (everywhere): Compiles successfully and runs with output Actual (gcc8, gcc10): Compiles successfully and segfaults on startup. Actual (gcc6): as expected |
|||
#228 | fixed | To define behaviour of new-delete on empty structs | ||
Description |
struct thing{}; void ?{}( thing & ) { printf("ctor\n"); } void ^?{}( thing & ) { printf("dtor\n"); } int main() { thing * one = new(); delete(one); } Current: Outputs "ctor," but not "dtor." An explanation of current behaviour:
We learned that sizeof( struct{} ) is 0 in C and 1 in C++. It is currently 0 in CFA. One option discussed:
Another option discussed:
|