Allow condition expression to have cleanups

- If the return type of the condition has a destructor, it will require a
  cleanup, as in this example:

  struct Bool { ~Bool(); operator bool(); }
  struct T { }
  int operator<(int, T);
  ...
  _Cilk_for (int i = 0; i < T(); ++i) { }