> a a. Conditional jumps in GIMPLE are not true three-address-code since they > > specify two (2) branch targets (in their general form). E.g.: > > > > if (cond) then > > goto target1; > > else > > goto target2; > > > > IMHO, this should be split (or at least made splittable) into: > > > > if (cond) then > > goto target1; > > if (!cond) then > > goto target2; > > > > It seems redundant but it's really clean. > > Branches are already special in a lot of ways, so whether they have > one argument or two doesn't seem to make any real difference.
Yes. But i don't think GIMPLE supports multi-way (general) branches. Isn't this indicative of the difference between "one" and "many" branch targets? I mean for executing GIMPLE on a VM, the latter would be the difficult choice. Having the need of a storage of branch targets etc. > > b. Are LOOP_EXPRs decomposable to combinations of if-then-else and gotos? > It > > would help for VM (virtual machine) execution of GIMPLE IR. Ideally, a > GIMPLE > > repres