Hi Luc, On 19 March 2017 at 01:41, Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> wrote: > This series solves a number of issues in sparse-llvm, > mainly about wrong or missing type information as needed > to build LLVM IR. > Most of these issues have been reported and investigated by > Dibyendu Majumdar. > > Changes since v2: > - remove the changes tha gave a type to PSEUDO_VALs > - introduction of OP_PUSH instructions > - move toward generic solution using the instruction's type > - some more fixes > - temporary remove changes related to OP_SYMADDR > > * patches 1 & 2 are fixes/improvement of inlined call > unrelated to LLVM > * patch 3 add support of OP_PUSH and solve variadic + constant > * patches 4 & 5 add missing type to some instructions > * patches 6-14 are preparatory cleanups > * patch 15 fix a problme with floats & SYM_NODE > * patch 16 improve the typing of contants > * patches 17 & 18 are fixes > * patch 19 fix issues with degenerated pointers > * patches 20-23 add test cases solved by patch 19 > * patches 24-30 are fixes > > These patches already allow to compile a lot more code to LLVM > but there is still known issues with sparse-llvm: > - it won't work on bitfields > - it won't work on computed gotos > - it won't work on label-as-value > - it won't work on exotic instructions (OP_SPLICE) > - there is a bunch of problems with floats > (but this is not specific to sparse-llvm). > There is most probably a bunch of others issues too. > > For convenience, this serie is also available at: > https://github.com/lucvoo/sparse/tree/llvm-fixes-v3 > > > Luc Van Oostenryck (30): > fix usage of inlined calls > inlined calls should not block BB packing > give function's arguments a type via OP_PUSH > give a type to OP_PHISOURCE > give a type to OP_SEL, always > llvm: remove unneeded arg 'module' > llvm: remove unneeded 'generation' > llvm: remove unneeded function::type > llvm: reduce scope of 'bb_nr' > llvm: use pseudo_list_size() instead of open coding it > llvm: give arguments a name > llvm: give a name to call's return values > llvm: avoid useless temp variable > llvm: extract get_sym_value() from pseudo_to_value() > llvm: fix test of floating-point type > llvm: fix translation of PSEUDO_VALs into a ValueRefs > llvm: fix output_op_store() which modify its operand > llvm: fix output_op_[ptr]cast() > llvm: take care of degenerated rvalues > llvm: add test cases for symbol's address > llvm: add test cases for pointers passed as argument > llvm: add test cases for arrays passed as argument > llvm: add test cases for degenerated pointers > llvm: add support for OP_NEG > llvm: fix pointer/float mixup in comparisons > llvm: fix type in comparison with an address constant > llvm: give correct type to binops > llvm: adjust OP_RET's type > llvm: variadic functions are not being marked as such > llvm: fix type of switch constants > Thank you for posting this series. I have applied the OP_PUSH changes to my repository and removed the previous solution of types on PSEUDO_VALs, and I am happy to report that it did not cause any new failures in my test cases. I haven't yet checked some of the other fixes above as I already had fixes for these, so I am not yet able to confirm whether these resolve the issues I faced. I will try them out over the next few days and report back. Regards Dibyendu -- 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