------- Comment #18 from ebotcazou at gcc dot gnu dot org 2005-10-11 22:21 ------- > Sorry -- my idea about fixing this in the front end is bogus. It's OK to > dereference a pointer-to-member to a virtual function member even if the base > class doesn't have any virtual functions;
Too bad. :-( > I don't understand your Comment #12 regarding MEM_NO_TRAP_P; MEM_NO_TRAP_P > calls rtx_addr_can_trap_p. Not quite, MEM_NOTRAP_P is a RTL flag that may be put on a MEM to assert that the memory reference doesn't trap; in particular, you're allowed to put it on any stack slot reference as far as I understand. > I'd suspect that making rtx_addr_can_trap_p respect STRICT_ALIGNMENT (by > checking the values of the CONST_INT added to the non-trapping address) would > work. Modulo the MEM_NOTRAP_P thing above, I agree. But I'm not sure enhancing the existing may_trap_p is the way to go, because as far as I can tell you want to optimize away this faulting memory ref if you can, and may_trap_p MEMs cannot be optimized away with -fnon-call-exceptions for example. So I'd lean towards adding a may_fault_p predicate that supercedes may_trap_p and using it in the reorg pass. -- ebotcazou at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |ebotcazou at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2005-10-10 22:42:25 |2005-10-11 22:21:07 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23585