Transform assertion into optimization hints

François Dumont frs.dumont@gmail.com
Tue Sep 18 05:43:00 GMT 2018


On 09/17/2018 11:15 PM, Marc Glisse wrote:
> On Mon, 17 Sep 2018, François Dumont wrote:
>
>> We talk about it a while back.
>>
>> I've run testsuite several times since I have this patch on my local 
>> copy. Note that when I implemented it the wrong way tests started to 
>> fail so it is clearly having an effect on the generated code.
>>
>> * include/bits/c++config [__OPTIMIZE__](__glibcxx_assert): Define as 
>> optimization hint
>>
>> using __builtin_unreachable.
>>
>> Ok to commit ?
>
> I see for instance in bits/regex_automaton.tcc:
>
>               __glibcxx_assert(__m.count(__ref._M_next) > 0);
>
> where __m is a map, which does not look so well suited for a 
> __builtin_unreachable. Is it using the wrong macro?
>
I don't know if this particular code is well covered by the testsuite. 
So I tweaked several tests in 23_containers/map and the code compiles 
just fine if it is your concern.

If your concern is rather that the condition got evaluated which will 
eventually slow down execution then I need to check generated code. Any 
good link explaining how to have a clear view on the generated code ?

Maybe a 'if __builtin_constant_p(_Condition)' could help if gcc doesn't 
do it itself already.



More information about the Libstdc++ mailing list