codegen: fix argument reordering issue
codegen: fix argument reordering issue

When building with clang a few codegen tests fail due to argument
reordering. This normally doesn't show up as the optimizer step fixes
that, but as we're now testing before optimization it get's in our way.

This means that a "complex" call like:
```
b_.CreateUDiv(b_.CreateSub(b_.CreateLoad(value_alloc), b_.CreateLoad(min_alloc)), b_.CreateLoad(step_alloc))
```

Will have to be split into:
```
Value *step = b_.CreateLoad(step_alloc);
Value *min = b_.CreateLoad(min_alloc);
Value *val = b_.CreateLoad(value_alloc);
Value *div3 = b_.CreateUDiv(b_.CreateSub(val, min), step);
```

To ensure that all arguments are always evaluated in the same order.

iovisor/bpftrace,iovisor/bpftrace,iovisor/bpftrace,iovisor/bpftrace