Linux SPARSE checker discussions
 help / color / mirror / Atom feed
* sparse-llvm subtraction of one pointer from another should result in int difference
@ 2017-03-13 20:59 Dibyendu Majumdar
  2017-03-19 15:37 ` Luc Van Oostenryck
  0 siblings, 1 reply; 2+ messages in thread
From: Dibyendu Majumdar @ 2017-03-13 20:59 UTC (permalink / raw)
  To: Linux-Sparse

Hi,

I was investigating an error reported while compiling minilua (please
see my earlier post on minlua) and I found that one of the issues was
that the result of subtracting one pointer from another is not handled
correctly in sparse-llvm. I think the OP_SUB implementation should be
changed as follows:

 case OP_SUB:
  if (symbol_is_fp_type(C, insn->type))
   target = LLVMBuildFSub(fn->builder, lhs, rhs, target_name);
  else if (LLVMGetTypeKind(LLVMTypeOf(lhs)) == LLVMPointerTypeKind &&
   LLVMGetTypeKind(LLVMTypeOf(rhs)) == LLVMPointerTypeKind) {
   // Both arguments are pointer
   // Result will be integer
   lhs = LLVMBuildPtrToInt(fn->builder, lhs,
LLVMIntType(C->target->bits_in_pointer), "");
   rhs = LLVMBuildPtrToInt(fn->builder, rhs,
LLVMIntType(C->target->bits_in_pointer), "");
   target = LLVMBuildSub(fn->builder, lhs, rhs, target_name);
  }
  else
   target = LLVMBuildSub(fn->builder, lhs, rhs, target_name);
  break;

Thanks and Regards
Dibyendu

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: sparse-llvm subtraction of one pointer from another should result in int difference
  2017-03-13 20:59 sparse-llvm subtraction of one pointer from another should result in int difference Dibyendu Majumdar
@ 2017-03-19 15:37 ` Luc Van Oostenryck
  0 siblings, 0 replies; 2+ messages in thread
From: Luc Van Oostenryck @ 2017-03-19 15:37 UTC (permalink / raw)
  To: Dibyendu Majumdar; +Cc: Linux-Sparse

On Mon, Mar 13, 2017 at 08:59:02PM +0000, Dibyendu Majumdar wrote:
> Hi,
> 
> I was investigating an error reported while compiling minilua (please
> see my earlier post on minlua) and I found that one of the issues was
> that the result of subtracting one pointer from another is not handled
> correctly in sparse-llvm.

This is fixed in the llvm-fixes-v3 serie I submitted yesterday.

-- Luc

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-03-19 15:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-13 20:59 sparse-llvm subtraction of one pointer from another should result in int difference Dibyendu Majumdar
2017-03-19 15:37 ` Luc Van Oostenryck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox