This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/23585] [4.0 regression] mem_fun* code fine with -O1, bus error with -O2
- From: "ebotcazou at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 11 Oct 2005 22:21:07 -0000
- Subject: [Bug rtl-optimization/23585] [4.0 regression] mem_fun* code fine with -O1, bus error with -O2
- References: <bug-23585-11161@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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