execution order

John Love-Jensen eljay@adobe.com
Mon Sep 24 12:46:00 GMT 2007


Hi Kövesdi,

> How the inter-dependency is determined?

Outside of my knowledge.  I presume by variable usage analysis.

GCC uses the SSA optimization technique as well, which has helped perform
some impressive optimizations.  I'm not sure if SSA is relevant here.

> How can I tell the compiler not to do re-ordering?

Use -O0 - that will tell the compiler not to optimize, which will prevent
re-ordering.

> Is it possible to make such a dependency between them?

If the destructor is not inline, and also is not provided in that same
translation unit (so it isn't "known" at compile time for that translation
unit), and also the global variable being returned is not static (so it has
external access outside of the translation unit), then the compiler cannot
presume that there is no dependency.  (Holistic analysis optimizers like
LLVM can still reorder.  But, currently, GCC isn't a holistic optimizer - so
that's not a concern.)

HTH,
--Eljay



More information about the Gcc-help mailing list