it isn't clear how to fuse these loops because the second one uses a value from array a that is one ahead of the loop counter. however, we could easily rewrite this code as;
now we are ready to fuse the loops;
loop fission, splitting large loops into smaller ones, also has a place in loop optimization, because it can eliminate data dependencies and reduce cache delays resulting from conflicts. one example of loop fission is loop peeling, the process of removing the beginning or ending statement from a loop. these are the statement that usually contain the loop's boundary conditions. for example, the code;
become;