The situation you are describing is a bit confusing. Since there is a branch instruction at the end of B0 that branches to B2, there seems to be a dependency between the instructions in B0 and B2. If the branch condition c does however not depend on B0, i.e., if the variables occurring in c are not written by B0, then the following can be done:
B0; if(c) B1 else B2 --> if(c) {B0;B1} else {B0;B2}
But acyclic scheduling usually prefers to do tail duplication which means the following:
{if(c) B1 else B2}; B3 --> if(c) {B1;B3} else {B2;B3}
Tail duplication does not need any dependency checks (at least for structured programs).