Re: [PATCH 00/30] LLVM fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux