[llvm-dev] Need help with code generation

David Blaikie via llvm-dev llvm-dev at lists.llvm.org
Mon Mar 21 16:02:24 PDT 2016


On Mon, Mar 21, 2016 at 2:54 PM, Rui Ueyama <ruiu at google.com> wrote:

> On Mon, Mar 21, 2016 at 10:49 PM, David Blaikie via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>>
>>
>> On Mon, Mar 21, 2016 at 2:46 PM, Rafael EspĂ­ndola <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>> On 21 March 2016 at 17:34, Tim Northover via llvm-dev
>>> <llvm-dev at lists.llvm.org> wrote:
>>> >> My understanding is that clang and llvm themselves are designed this
>>> way
>>> >> (crash when the unexpected happens).
>>> >
>>> > I don't think so. I'd view any Clang crash as a bug (probably to be
>>> > prioritised below silent CodeGen and many others, but not "working as
>>> > designed").
>>> >
>>> >> For example the fact that clang forks itself to be able to report
>>> diagnostics
>>> >
>>> > That seems like just trying to make our own job easier to me. I think
>>> > the entire point of the fork is to get a backtrace we can fix, and
>>> > point out where the user should send it.
>>> >
>>> >> llvm is full of report_fatal_error() (or worse, assertions that can
>>> fire on unexpected user input).
>>> >
>>> > A bit of a grey area since LLVM isn't itself a user-facing tool, but I
>>> > think I'd still say that a report_fatal_error that's not actionable by
>>> > the user is actually an LLVM bug. And a segfault definitely so.
>>>
>>> It is completely trivial to crash llvm. A case I wrote today in
>>> another thread while waiting for tests to run:
>>>
>>> target triple = "x86_64-unknown-linux-gnu"
>>> @".data" = global i32 42
>>>
>>> That will crash "llc -filetype=obj". The fact that it is considered a
>>> bug doesn't mean much if there is no coordinated effort to fix them.
>>>
>>
>> I think it does, actually - that patches will be accepted to fix pretty
>> much any crash in LLVM. (llc isn't a user facing tool, so that's a
>> praticularly low priority - but as a general library (I assume your example
>> also crashes Clang, which would be where this would surface in a more
>> important way) it's pretty well accepted that crashes are bugs, I think)
>>
>>
>>> Right now lld is already harder to crash than llvm. We are just being
>>> honest about the fact that it is possible to craft a .o file that will
>>> crash it.
>>>
>>
>> But the difference seems to be you know about these cases and don't
>> consider them to be bugs/anything to fix. In LLVM if they're known, they're
>> at least considered bugs and often/usually considered by someone to be
>> worth fixing at some point.
>>
>
> I think this is the same from the user's point of view. If LLVM is not
> crash-bug-free in the version you are using, you need some precaution such
> as forking in order to protect your program from crashing if you need 100%
> guarantee.
>

Crashes seem very different from a user's point of view - does the program
execute undefined behavior (potentially silently producing output and
exiting 0) or does it have well defined behavior (even if that behavior is
"print an error and exit(1)").


>
>
>> - Dave
>>
>>
>>>
>>> Cheers,
>>> Rafael
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160321/e4ffa27b/attachment.html>


More information about the llvm-dev mailing list