">

(original) (raw)

Thanks, James.
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@gmail.com> wrote:
Hi,

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

James

On 17 Nov 2017 21:12, "Dounia Khaldi via llvm-dev" <llvm-dev@lists.llvm.org> wrote:
Hello,

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?


Thanks,

Dounia


\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
LLVM Developers mailing list
llvm-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev