[llvm-dev] The state of ARMConstantIslandPass in 4.0.[01]

Ariel Ben-Yehuda via llvm-dev llvm-dev at lists.llvm.org
Mon May 29 15:44:44 PDT 2017


Opened merge requests:
https://bugs.llvm.org/show_bug.cgi?id=33213
https://bugs.llvm.org/show_bug.cgi?id=33214
https://bugs.llvm.org/show_bug.cgi?id=33215
https://bugs.llvm.org/show_bug.cgi?id=33216
https://bugs.llvm.org/show_bug.cgi?id=33217
https://bugs.llvm.org/show_bug.cgi?id=33218

On Tue, May 30, 2017 at 1:27 AM, Tom Stellard <tstellar at redhat.com> wrote:
> On 05/29/2017 05:41 PM, Ariel Ben-Yehuda via llvm-dev wrote:
>> Hi,
>>
>> We at Rust are using LLVM for our codegen. Since Rust version 1.19.0,
>> which should ship in July 21st, we are using a slightly patched
>> version of LLVM 4.0.
>>
>> The transition to LLVM 4.0 had been fairly pain-free on x86 (at least
>> excluding the standard suite of assertion failures using MSVC SEH, but
>> that's fairly under control), but we have encountered several scary
>> bugs in ARM, most specifically in ARMConstantIslandPass.cpp:
>>
>>  - https://github.com/rust-lang/rust/issues/41672
>>  - https://github.com/rust-lang/rust/issues/42248
>>
>> The former of these is a fairly benign assertion failure, but the
>> latter is a scary "in the wild" wrong codegen bug, which can really
>> mess up with programmers.
>>
>> Both of the bugs have fixes in trunk:
>> r295964 - Fix assertion failure in ARMConstantIslandPass.
>> r297871 - ARM: avoid clobbering register in v6 jump-table expansion.
>>
>> I can easily backport the fixes for these 2 bugs into our LLVM branch.
>> However, while looking at the diff between 4.0 and trunk I've seen
>> several more fixes to "scary-looking" bugs:
>>
>> r294949 - [Thumb-1] TBB generation: spot redefinitions of index register
>> r295816 - [ARM] Fix constant islands pass.
>> r299634 - [ARM] Remove a dead ADD during the creation of TBBs
>>     (that one looks more like an optimization than a wrong-codegen
>> thing, but including for completeness)
>> r300870 - [Thumb-1] Fix corner cases for compressed jump tables
>>
>> After seeing the previous ones, I'm worried these other fixes might
>> also fix some "in the wild" wrong codegen bugs. However, I'm not
>> comfortable backporting so many patches by myself. We are open to
>> moving to being based on LLVM 4.0.1 when it is released, but it does
>> not seem to include *any* of the above fixes.
>>
>> Are these fixes important? Should we backport them? Do we need to keep
>> anything in mind?
>>
>
> It's probably too late for these to make it into the 4.0.1 release,
> since the merge deadline is today, but please submit merge requests
> for these anyway (preferred way is to use the utils/release/merge-request.sh
> script), because it will help us determine if we need a 4.0.2 release.
>
> Thanks,
> Tom
>
>> Thanks in advance,
>>     - Ariel
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>


More information about the llvm-dev mailing list