This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/38952] [4.4 Regression] EH does not work.



------- Comment #17 from dave dot korn dot cygwin at gmail dot com  2009-01-25 07:47 -------
And this is what I'll try:

 -- Target Hook: bool TARGET_BUILTIN_SETJMP_FRAME_VALUE ()
     This target hook should return an rtx that is used to store the
     address of the current frame into the built in `setjmp' buffer.
     The default value, `virtual_stack_vars_rtx', is correct for most
     machines.  One reason you may need to define this target hook is if
     `hard_frame_pointer_rtx' is the appropriate value on your machine.

(The first patch fixed all the failing eh testcases, but accessing the local
variables downward through %ebp would mean they'd be misaligned, not starting
down at the bottom of the frame, and differently aligned according to the
dynamic component of the gap, so it would be bound to go wrong in situations
involving vectors or other higher-alignment datatypes.)

If I leave the can_eliminate test alone but define this target hook, I figure
we should still get local vars indexed upward from $esp but will get the frame
pointer indexed down from $ebp, or at least that's how I read the above.  So
hopefully a target hook that overrides the default return value with
hard_frame_pointer_rtx if stack_realign_fp is true and otherwise returns
virtual_stack_vars_rtx like the default might be what we're looking for. 
AFAICT it's not currently defined for i386.

Need sleep nowzzzzzzZZZZZZZ...


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38952


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]