This is the mail archive of the gcc@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]

Re: Bypassing jump optimization


> Hi.
> 
> I'm implementing structured exception handling in gcc. What is the correct 
> way (if any exist) to bypass jump optimization on a range of insns?
> 
> If I have gcc to generate code like this:
> 
> 	<protected code>
> 	jmp	after_exception_handler
> exception_filter:
> 	movl $0, %eax
> 	ret
> exception_handler:
> 	<exception handler code>
> after_exception_handler:
> 
> then gcc optimizes all the code above away. This happens even if using the 
> -O0 option to disable optimization.
> 
> If I use LABEL_PRESERVE_P(<label>) = 1 on all labels, then the labels are 
> preserved, but the code is still removed.
You need to modify the CFG building code to add the needed edges from the
places that can throw into exception_handler. See our existing EH code
how it is done.

Also note that 3.1 code came trought major reorganization, so in case you
want to merge your work to the mainline, you should probably use it as a base,
to avoid headaches later.

Honza
> 
> I'm using gcc-3.0-release.
> 
> Casper Hornstrup


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