<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=US-ASCII">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2654.45">
<TITLE>RE: [openib-general] Re: uverbs events</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Very important - there is a bug in gcc version 3.4.2 that had been fixed in gcc 3.4.3.</FONT>
<BR><FONT SIZE=2>This bug ((# 17581) heart us in VAPI when full optimizations is working in bits or on 64 bits systems.</FONT>
</P>

<P><FONT SIZE=2>So I suggest that you replace gcc with gcc 3.4.3.</FONT>
</P>

<P><FONT SIZE=2>Tziporet</FONT>
</P>

<P><FONT SIZE=2>-----Original Message-----</FONT>
<BR><FONT SIZE=2>From: Roland Dreier [<A HREF="mailto:roland@topspin.com">mailto:roland@topspin.com</A>]</FONT>
<BR><FONT SIZE=2>Sent: Tuesday, April 12, 2005 6:14 AM</FONT>
<BR><FONT SIZE=2>To: Grant Grundler</FONT>
<BR><FONT SIZE=2>Cc: openib-general@openib.org</FONT>
<BR><FONT SIZE=2>Subject: Re: [openib-general] Re: uverbs events</FONT>
</P>
<BR>

<P><FONT SIZE=2>    Grant> doorbell[] is a local variable and mthca_write64() is</FONT>
<BR><FONT SIZE=2>    Grant> static inline.  I don't see a problem with the assignments</FONT>
<BR><FONT SIZE=2>    Grant> to doorbell getting optimized out since the scope of that</FONT>
<BR><FONT SIZE=2>    Grant> variable is completely visible to gcc. A smart compiler</FONT>
<BR><FONT SIZE=2>    Grant> would just use registers and reduce the 32-bit stores.</FONT>
</P>

<P><FONT SIZE=2>Actually, what is that the compiler sees that we write to doorbell[]</FONT>
<BR><FONT SIZE=2>as a uint32_t but then read from it by dereferencing a uint64_t*.  -O2</FONT>
<BR><FONT SIZE=2>turns on -fstrict-aliasing, which allows the compiler to assume that</FONT>
<BR><FONT SIZE=2>pointers of different types never alias each other.  So gcc says, hey,</FONT>
<BR><FONT SIZE=2>all you do is write to that local doorbell[] variable and never do</FONT>
<BR><FONT SIZE=2>anything with the values you write, so I'll just throw away that dead</FONT>
<BR><FONT SIZE=2>code.  So gcc ends up only generating code for the store in</FONT>
<BR><FONT SIZE=2>mthca_write64() without any code to initialize doorbell[].</FONT>
</P>

<P><FONT SIZE=2> - R.</FONT>
<BR><FONT SIZE=2>_______________________________________________</FONT>
<BR><FONT SIZE=2>openib-general mailing list</FONT>
<BR><FONT SIZE=2>openib-general@openib.org</FONT>
<BR><FONT SIZE=2><A HREF="http://openib.org/mailman/listinfo/openib-general" TARGET="_blank">http://openib.org/mailman/listinfo/openib-general</A></FONT>
</P>

<P><FONT SIZE=2>To unsubscribe, please visit <A HREF="http://openib.org/mailman/listinfo/openib-general" TARGET="_blank">http://openib.org/mailman/listinfo/openib-general</A></FONT>
</P>

</BODY>
</HTML>