[LLVMdev] aborting on invalid code
Vikram S. Adve
vadve at cs.uiuc.edu
Mon Oct 13 13:56:35 PDT 2008
On Oct 13, 2008, at 3:16 PM, Chris Lattner wrote:
>
> On Oct 13, 2008, at 1:10 PM, Robert Zeh wrote:
>
>>
>> On Oct 13, 2008, at 1:07 PM, Chris Lattner wrote:
>>>
>>> Exceptions have a high cost in terms of code size, binary size, and
>>> even a bit of execution time.
I agree. I think the client should be allowed to choose whether to
compile these in or not. At the LLVM library level, this may have to
be compile-time selected (which could be a bit ugly but should not be
too bad) to avoid the code size problem.
>>> Also, they don't magically make the
>>> code safe from any error: code has to be designed specifically to
>>> use
>>> RAII and other techniques to handle exceptions properly.
I understand that -- you're not making the client's life easy, you're
just making it possible.
>>> Reading a
>>> C+
>>> + trade magazines/books about EH topics will give you an idea of the
>>> complexity involved in doing it right. Further, as I mentioned up-
>>> thread, turning aborts into exception throws won't save you from
>>> null
>>> pointer or garbage pointer dereferences.
>>
>>
>> You can catch the null pointer and garbage pointer dereferences
>> with a
>> signal handler (in Linux land, at least), and then invoke your direct
>> reporting mechanism with that. Is the concern that some of the other
>> LLVM clients don't have signal handling?
>
> Garbage/dangling pointers can corrupt memory, they don't always trap.
> C just isn't a safe programming language (though there are many
> interesting research projects that can help).
Yes, but that's a case that LLVM would not do any error reporting
anyway. In any case, where it would otherwise report an error, it
seems to me you could give the client the *option* to handle the
signal and throw an exception, if needed, and then field the exception.
>
>
> -Chris
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list