-/** Optimize casting between class types.
- *
- * class A { m(); }
- * class B extends A { }
- * class C extends B {}
- * Performs the following transformations:
- * C c = (C)(B)(A)(B)new C() --> C c = (C)(B)newC() --> C c = new C()
- * (Optimizing downcasts as A a = (A)(B)(new A()) --> A a = new A() can
- * be suppressed by setting flag opt_suppress_downcast_optimization.
- * Downcasting A to B might cause an exception. It is not clear
- * whether this is modeled by the Firm Cast node, as it has no exception
- * outputs.);
- * If there is inh_m() that overwrites m() in B:
- * ((A) new B()).m() --> (new B()).inh_m()
- * Phi((A)x, (A)y) --> (A) Phi (x, y) if (A) is an upcast.
- *
- * Computes type information if not available. @see irtypeinfo.h.
- * Typeinformation is valid after optimization.
- * Invalidates trout information.
- */
-void optimize_class_casts(void);
-
-#endif /* _TROPT_H_ */