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 16:09, Dibyendu Majumdar <mobile@xxxxxxxxxxxxxxx> wrote:
> 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.
>

I have successfully tested the binary ops changes, but the comparison
and rvalue changes appear to not cover all cases. I will see if I can
submit tests.

Thanks and 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