[llvm-dev] Signed or unsigned EQ/NEQ
Dounia Khaldi via llvm-dev
llvm-dev at lists.llvm.org
Mon Nov 20 08:36:53 PST 2017
This answers my question. I will have to retrieve other operations that use
the same value. But even this won't work in all case.
On Sat, Nov 18, 2017 at 7:28 AM, James Courtier-Dutton <
james.dutton at gmail.com> wrote:
> I am writing a decompiler. For this, i need to do type inference
> propagation. EQ/NEQ do not provide any indication of type. So the only
> solution is to infer it from other uses of the same registers.
> I think you will have to do the same.
> Also, there are problem edge cases. What if one register is signed and the
> other is unsigned?
> Kind regards
> On 17 Nov 2017 21:12, "Dounia Khaldi via llvm-dev" <
> llvm-dev at lists.llvm.org> wrote:
>> In one of the loop transformations I am developing, I need to convert eq
>> and neq loop latch condition into less than or greater than depending on
>> the control flow.
>> The problem is that CmpInst::ICMP_EQ and CmpInst::ICMP_NE are neither
>> signed nor unsigned in LLVM. Also, I did not find a way to find out if the
>> integer operands of the CmpInst are signed or unsigned. Apparently, LLVM
>> does not distinguish in its type system between signed and unsigned
>> variables. So, I am not able to generate the appropriate signed or unsigned
>> ICMP_(S|U)LT or ICMP_(S|U)GT.
>> Do you have a solution for this?
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev