[LLVMdev] Proposal for better assertions in LLVM

Nathan Jeffords blunted2night at gmail.com
Tue Jul 26 21:08:24 PDT 2011


do {} while (false)

On Tue, Jul 26, 2011 at 8:53 PM, Talin <viridia at gmail.com> wrote:

> Great suggestion - what should the !NDEBUG version look like?
>
>
> On Tue, Jul 26, 2011 at 8:01 PM, Nathan Jeffords <blunted2night at gmail.com>wrote:
>
>> sorry, my previous message got sent too early
>>
>> I think the macro should look something like this:
>>
>> #define ASSERT_STRM(cond,expr) \
>>  do {
>>   if (cond) {
>>     std::cerr << expr << std::end;
>>     assertion_trap ();
>>   }
>>  } while (false)
>>
>>
>> On Tue, Jul 26, 2011 at 7:57 PM, Nathan Jeffords <blunted2night at gmail.com
>> > wrote:
>>
>>> wrapping the macro's body in:
>>>
>>> do { ... } while (false)
>>>
>>> would make the the macro a proper statement so that:
>>>
>>> if (cond)
>>>   ASSERT(some_other_cond);
>>> else
>>>   do_something_cool ();
>>>
>>> compiles as expected.
>>>
>>> IMO, it would work as such
>>>
>>> #define ASSERT_STM(cond,expr)
>>>
>>>
>>> On Tue, Jul 26, 2011 at 6:36 PM, Reid Kleckner <reid.kleckner at gmail.com>wrote:
>>>
>>>> He wants to be able to resume execution from the debugger after
>>>> assertion failure.
>>>>
>>>> Reid
>>>>
>>>> On Tue, Jul 26, 2011 at 8:07 PM, Alistair Lynn <arplynn at gmail.com>
>>>> wrote:
>>>> > Hi-
>>>> >
>>>> >> Yep, but tripping the debugger is highly non-portable.
>>>> >
>>>> > You're suggesting that inline asm is more portable than calling abort?
>>>> >
>>>> > Alistair
>>>> >
>>>> > _______________________________________________
>>>> > LLVM Developers mailing list
>>>> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>> >
>>>>
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>
>>>
>>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>
>
> --
> -- Talin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110726/6d40fdaa/attachment.html>


More information about the llvm-dev mailing list