On Tue, Jun 11, 2013 at 8:01 AM, Justin Bogner <span dir="ltr"><<a href="mailto:mail@justinbogner.com" target="_blank">mail@justinbogner.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">Joerg Sonnenberg wrote:<br>
> On Tue, Jun 11, 2013 at 12:18:55AM -0600, Justin Bogner wrote:<br>
>> The clz, ctz, and popcount builtins are trivial to add constant folded<br>
>> implementations of, and gcc accepts them in const contexts.<br>
><br>
</div><div class="im">> Can you test the constant folding with<br>
> char foo[f(x) == val ? 1 : -1];<br>
><br>
> or so?<br>
<br>
</div>Do you mean something like this?</blockquote><div><br></div><div>A testcase which is less likely to pass by accident would be better (for instance, your popcount tests would succeed if the builtin just returned its argument, and tests with a '1' in the sign bit would be useful).</div>
<div><br></div><div>You should also ensure that __builtin_clz(0) and __builtin_ctz(0) are not treated as constants.</div></div>