On Mon, Aug 14, 2017 at 1:11 PM, Dibyendu Majumdar <mobile@xxxxxxxxxxxxxxx> wrote: > I assume that you have not yet applied this approach to Sparse-LLVM > and tested that it works for var arg calls? I would suggest completing > the changes so that it can be tested thoroughly. No. this is just one night's hack to make the plumbing part work. Provide a size for the VALUE pseudo. I haven't have a chance to integrate into sparse-llvm. > The push approach has the benefit that it makes clear what arguments > are being passed in a call. Previously this information was not > revealed in the Sparse linearized dump. It would be a shame to lose > that information - perhaps you could still dump the arguments along > with a call? Are you sure? Here is what I have for RC5: ./test-linearize cse.c .L414: load.64 %r1052 <- 0[insn] call.64 %r1053 <- try_to_cse, %arg1, %r1044(last), %r1052 store.64 %r1053 -> 0[insn] phisrc.64 %phi474 <- %r1053 br .L413 You can see exactly what is the calling arguments. There is an pseudo_list for the arguments. struct /* call */ { pseudo_t func; struct pseudo_list *arguments; <============== struct symbol *fntype; }; The only thing you want, which is not there is the VALUE pseudo_size. I add that in this patch. I haven't take a deep look into the push instruction patch yet. I image this is less impact on the IR and get the job done. With less redundant information in the IR. The instruction stream is more compact as well. Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html