[llvm-dev] Need help in understanding llvm optimization

SANGEETA CHOWDHARY via llvm-dev
Sat, 11 Aug 2018 19:30:14 -0000

Hi,

I have below code in C -

int main() {

  double x,y;

  x = 1e16;

  y = (x + 1) - x;

  printf("y:%e\n", y);

  return 0;

}

llvm bitcode looks like this for this function -


; Function Attrs: nounwind uwtable

define dso_local i32 @main() local_unnamed_addr #0 {

entry:

  %call = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x
i8], [4 x i8]* @.str, i64 0, i64 0), double 0.000000e+00)

  ret i32 0

}

I am not able to understand how addition and subtraction are performed in
this code. There is no fadd or fsub instruction. How llvm knows that result
of y is 0?

Is there any way to disable this in llvm?


Any help would be much appreciated.


Regards,

Sangeeta
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20180811/7e03ffa5/attachment.html>