- /* finally, this call can float */
- set_irn_pinned(call, op_pin_state_floats);
+ /*
+ * Sorrily we cannot simply set the node to 'float'.
+ * There is a reason for that:
+ *
+ * - The call might be inside a loop/if that is NOT entered
+ * and calls a endless function. Setting the call to float
+ * would allow to move it out from the loop/if causing this
+ * function be called even if the loop/if is not entered ...
+ *
+ * This could be fixed using post-dominators for calls and Pin nodes
+ * but need some more analyses to ensure that a call that potential
+ * never returns is not executed before some code that generates
+ * observable states...
+ */
+
+ /* finally, this call can float
+ set_irn_pinned(call, op_pin_state_floats); */