<html>#2052: piraha assumes that assert(false) always aborts
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Roland Haas</td></tr>
<tr><td style='text-align:right'> Status:</td><td>resolved</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></td></tr>
<tr><td style='text-align:right'> Version:</td><td>development version</td></tr>
<tr><td style='text-align:right'> Type:</td><td>bug</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>minor</td></tr>
<tr><td style='text-align:right'>Component:</td><td>Cactus</td></tr>
</table>
<p>Changes (by Steven R. Brandt):</p>
<p><table>
<tr><td>status:</td><td>resolved (was open)</td></tr>
</table></p>
<p>I recently tried compiling Cactus with the Cray compiler on BW and get (among other things) warnings like this:</p>
<div class="codehilite"><pre><span></span><code><span class="n">CC</span><span class="o">-</span><span class="mi">940</span> <span class="n">crayc</span><span class="o">++</span><span class="p">:</span> <span class="n">WARNING</span> <span class="n">File</span> <span class="o">=</span> <span class="n">src</span><span class="o">/</span><span class="n">piraha</span><span class="o">/</span><span class="n">Piraha</span><span class="p">.</span><span class="n">hpp</span><span class="p">,</span> <span class="n">Line</span> <span class="o">=</span> <span class="mi">326</span>
<span class="n">A</span> <span class="ss">"return"</span> <span class="k">statement</span> <span class="k">is</span> <span class="n">missing</span> <span class="k">from</span> <span class="n">the</span> <span class="k">end</span> <span class="k">of</span> <span class="n">a</span> <span class="n">non</span><span class="o">-</span><span class="n">void</span> <span class="k">function</span>
<span class="ss">"cctki_piraha::LookAhead::match"</span><span class="p">.</span>
<span class="n">bool</span> <span class="k">match</span><span class="p">(</span><span class="n">Matcher</span> <span class="o">*</span><span class="n">m</span><span class="p">)</span> <span>{</span> <span class="n">assert</span><span class="p">(</span><span class="k">false</span><span class="p">);</span> <span>}</span><span class="o">//</span><span class="n">TODO</span><span class="p">:</span> <span class="n">Fill</span> <span class="k">in</span>
</code></pre></div>
<p>which is indeed a bug. If one defines NDEBUG (as is done for the highly optimized option lists) then assert() is a no-op and the function (if it was called) returned garbage.</p>
<p>I see three solutions:</p>
<ol>
<li>call CCTK_Abort()</li>
<li>add a "return false;" or so</li>
<li>remove the whole function definition. I think C++ does not mind if declared member fun
<p>Comment (by Steven R. Brandt):</p>
<p>Applied previously.</p>
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2052/piraha-assumes-that-assert-false-always'>https://bitbucket.org/einsteintoolkit/tickets/issues/2052/piraha-assumes-that-assert-false-always</a></p>
</html>