[PATCH] D65222: [IPSCCP] Add assertion to surface cases where we zap returns with overdefined users.

Peter Smith via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 29 07:37:06 PDT 2019


peter.smith added a comment.

In D65222#1603622 <https://reviews.llvm.org/D65222#1603622>, @fhahn wrote:

> In D65222#1602666 <https://reviews.llvm.org/D65222#1602666>, @peter.smith wrote:
>
> > I do have a mail from our CI system with a series of reproducible steps that can clone and checkout revisions of LLVM and Linux that can cross-compile the linux kernel for aarch64 on an x86_64 linux machine that I'll forward on to you. I also have the preprocessed source of kernel/signal.c that failed that I'll include in the mail but I can also probably add to a PR if I compress it.
> >
> > Would you be able to take a look to see if the failures are genuine bugs in clang that the assertion has uncovered or whether it is triggering by mistake?
>
>
> Would it be possible to provide the bitcode file before LTO without too much effort? The reproducer builds fine on macOS without -fuse-ld=lld (fuse-ld=lld fails with an unrelated error) but unfortunately I do not have access to a suitable Linux system for cross-compiling to `armv7a-linux-gnueabihf`


I can get the bitcode object out of lld before the code-generator is run, but as there is only one input this is pretty much identical to the output of the compiler.

I'm struggling to reproduce the failure outside of lld. I've tried:

- -fuse-ld=gold with the llvmLTO.so plugin
- Extracting what looks to be the equivalent command line options that llvm would pass to the lto plugin --data-sections --function-sections --relax-elf-relocations --relocation-model=static --addrsig --disable-verify -O3 -mcpu=generic

I can only think that there is some way that lld is setting up the code generator via the API that I can't capture with the external tools.

I will send you (via email due to file size) the output of lld --reproduce which should capture all the dependencies in an archive. I've modified the example a bit to add a test2.cpp to provide a definition of void d() {} this needs to be in a different source file as the test will pass if I define in test1.cpp.

I've checked that the reproducer works on my machine (TM).


Repository:
  rL LLVM

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

https://reviews.llvm.org/D65222





More information about the llvm-commits mailing list