<div dir="ltr">You might find it useful to write functions that take arguments (of unknown value). If the function has external linkage (the default) then the compiler doesn't know who else might call it and has to keep it around, even if it inlines some copies of it:<div><br></div><div>double foo(double x){</div><div>   double y = (x + 1) - x;</div><div>   return y;</div><div>}</div><div><br></div><div>If you compile it with "-c" or "-S" then you don't need a main() at all.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Aug 11, 2018 at 12:30 PM, SANGEETA CHOWDHARY via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><font face="arial, helvetica, sans-serif">Hi,</font><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">I have below code in C -</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div>




<font face="arial, helvetica, sans-serif"><span></span> </font><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)">




<font face="arial, helvetica, sans-serif"><span></span> </font></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><font face="arial, helvetica, sans-serif"><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures;color:rgb(52,188,38)">int</span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures"> main() {</span></font></p>
<p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><font face="arial, helvetica, sans-serif"><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span class="m_7085422958230088829gmail-Apple-converted-space">  </span></span><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures;color:rgb(52,188,38)">double</span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures"> x,y;</span></font></p>
<p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><font face="arial, helvetica, sans-serif"><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span class="m_7085422958230088829gmail-Apple-converted-space">  </span>x = </span><span class="m_7085422958230088829gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">1e16</span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures">;</span></font></p>
<p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><font face="arial, helvetica, sans-serif"><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span class="m_7085422958230088829gmail-Apple-converted-space">  </span>y = (x + </span><span class="m_7085422958230088829gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">1</span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures">) - x;</span></font></p>
<p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><font face="arial, helvetica, sans-serif"><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span class="m_7085422958230088829gmail-Apple-converted-space">  </span>printf(</span><span class="m_7085422958230088829gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">"y:</span><span class="m_7085422958230088829gmail-s4" style="font-variant-ligatures:no-common-ligatures;color:rgb(213,59,211)">%e\n</span><span class="m_7085422958230088829gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">"</span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures">, y);</span></font></p>
<p class="m_7085422958230088829gmail-p2" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal;color:rgb(205,121,35)"><font face="arial, helvetica, sans-serif"><span class="m_7085422958230088829gmail-s5" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><span class="m_7085422958230088829gmail-Apple-converted-space">  </span></span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures">return</span><span class="m_7085422958230088829gmail-s5" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"> </span><span class="m_7085422958230088829gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">0</span><span class="m_7085422958230088829gmail-s5" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">;</span></font></p>
<p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures"><font face="arial, helvetica, sans-serif">}</font></span></p>


<font face="arial, helvetica, sans-serif"><br></font><p></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)"><font face="arial, helvetica, sans-serif">llvm bitcode looks like this for this function -</font></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)"><font face="arial, helvetica, sans-serif"><br></font></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)">




<font face="arial, helvetica, sans-serif"><span></span> </font></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures"><font face="arial, helvetica, sans-serif">; Function Attrs: nounwind uwtable</font></span></p>
<p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><font face="arial, helvetica, sans-serif"><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures">define dso_local i32 @main() local_unnamed_addr #</span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">0</span><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures"> {</span></font></p>
<p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures"><font face="arial, helvetica, sans-serif">entry:</font></span></p>
<p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><font face="arial, helvetica, sans-serif"><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures"><span class="m_7085422958230088829gmail-Apple-converted-space">  </span>%</span><span class="m_7085422958230088829gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(205,121,35)">call</span><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures"> = tail </span><span class="m_7085422958230088829gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(205,121,35)">call</span><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures"> i32 (i8*, ...) @printf(i8* getelementptr inbounds ([</span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">4</span><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures"> x i8], [</span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">4</span><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures"> x i8]* @.str, i64 </span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">0</span><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures">, i64 </span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">0</span><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures">), double </span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">0</span><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures">.000000e+</span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">00</span><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures">)</span></font></p>
<p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><font face="arial, helvetica, sans-serif"><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures"><span class="m_7085422958230088829gmail-Apple-converted-space">  </span>ret i32 </span><span class="m_7085422958230088829gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">0</span></font></p>
<p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:normal"><span class="m_7085422958230088829gmail-s1" style="font-variant-ligatures:no-common-ligatures"><font face="arial, helvetica, sans-serif">}</font></span></p>


<font face="arial, helvetica, sans-serif"><br></font><p></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)"><font face="arial, helvetica, sans-serif">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? </font></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)"><font face="arial, helvetica, sans-serif">Is there any way to disable this in llvm?</font></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)"><font face="arial, helvetica, sans-serif"><br></font></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)"><font face="arial, helvetica, sans-serif">Any help would be much appreciated.</font></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)"><font face="arial, helvetica, sans-serif"><br></font></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)"><font face="arial, helvetica, sans-serif">Regards,</font></p><p class="m_7085422958230088829gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:normal;color:rgb(0,0,0);background-color:rgb(255,255,255)"><font face="arial, helvetica, sans-serif">Sangeeta</font></p></div></div>
<br>______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>