[PATCH] D99424: [BasicAA] Be more careful with modulo ops on VariableGEPIndex.

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 30 06:11:14 PDT 2021


mstorsjo added a comment.

In D99424#2849596 <https://reviews.llvm.org/D99424#2849596>, @fhahn wrote:

> In D99424#2849581 <https://reviews.llvm.org/D99424#2849581>, @fhahn wrote:
>
>> In D99424#2849458 <https://reviews.llvm.org/D99424#2849458>, @mstorsjo wrote:
>>
>>> The problem appears with https://martin.st/temp/pixlet-preproc.c, compiled with “clang -target aarch64-w64-mingw32 -c -O3 pixlet-preproc.c”. I haven’t pinpointed exactly what changes and whether that’s wrong or if the source itself relies on something undefined though, or if there’s some strict aliasing violation.
>
> If you manage to reduce it further down, that would be very helpful. Unfortunately it looks like the only difference comes from the MachineScheduler, so it is a bit tricky to extract a nice test case.

FWIW, if you’ve got access to aarch64 linux, I would expect that you can reproduce the same issue there. (I haven’t verified myself yet.) To try it out at runtime, you should be able to do this:

  git clone git://source.ffmpeg.org/ffmpeg
  cd ffmpeg
  ./configure --cc=clang --samples=/path/to/empty/dir
  make fate-rsync # sync data samples for running tests, into the path specified above
  make -j$(nproc) fate-pixlet-rgb fate-twinvq

The miscompilation happens in object files `libavcodec/pixlet.o` and `libavcodec/twinvq.o`.

(Sorry I'm not of more assistance in narrowing down the actual change itself at the moment.)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99424/new/

https://reviews.llvm.org/D99424



More information about the llvm-commits mailing list