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]
Other format: [Raw text]

Re: Understanding some EXPR nodes.


Thanks for the reply. One thing that I didnt quite get...


Ian Lance Taylor wrote:


TRY_CATCH_EXPR/TRY_FINALLY_EXPR


If operand 0 throws an exception, there is an implicit rethrow after
executing operand 1. (Of course, operand 1 can prevent that rethrow
by doing its own throw, or by calling a function which does not
return, etc.).


TRY_CATCH_EXPR is generated for C++
   try { ... } catch (...) { }

TRY_FINALLY_EXPR is generated for
   class C { ~C(); }; ... { C c; ... }
to ensure that C's destructor is run.

And of course they can be generated for other languages as well.



For the C++ code shown above try { ... } catch(...) {} From memory I get a TRY_BLOCK node and not a TRY_CATCH_EXPR.

Also is the implicit rethrow just for the TRY_FINALLY_EXPR and not for the TRY_CATCH_EXPR or is it for both of them?

Thanks,
Brendon.


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