[llvm-dev] TableGen crash when building LLVM with EXPENSIVE_CHECKS enabled

122 views
Skip to first unread message

Lau, Luke via llvm-dev

unread,
May 30, 2019, 4:39:20 AM5/30/19
to llvm...@lists.llvm.org
Hello,
I'm trying to run checks with EXPENSIVE_CHECKS enabled, but it crashes when
generating some intrinsics file with TableGen.

> cd /home/luke/Source/llvm-project/build && /home/luke/Source/llvm-
> project/build/bin/llvm-tblgen -gen-intrinsic-impl -I /home/luke/Source/llvm-
> project/llvm/include/llvm/IR -I /home/luke/Source/llvm-project/llvm/include
> /home/luke/Source/llvm-project/llvm/include/llvm/IR/Intrinsics.td -o
> include/llvm/IR/IntrinsicImpl.inc -d include/llvm/IR/IntrinsicImpl.inc.d
> /usr/bin/../lib/gcc/x86_64-linux-
> gnu/8/../../../../include/c++/8/debug/safe_container.h:83:
> Error: attempt to self move assign.
>
> Objects involved in the operation:
> sequence "this" @ 0x0x7fe3b3070468 {
> }
>

The command I've been using to configure it is

> cmake ../llvm -G Ninja \
> -DCMAKE_BUILD_TYPE=Debug \
> -DLLVM_ENABLE_LLD=On \
> -DLLVM_ENABLE_EXPENSIVE_CHECKS=On
>

Removing the -DLLVM_ENABLE_EXPENSIVE_CHECKS=On allows it to build. Is there
something wrong with the version on libstdc++ on my system? (Debian testing)
This was happening on revision 5857bf5d1e5a5ffe5ae51a38514ee55495c0cc69
--------------------------------------------------------------
Intel Research and Development Ireland Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263


This e-mail and any attachments may contain confidential material for the sole
use of the intended recipient(s). Any review or distribution by others is
strictly prohibited. If you are not the intended recipient, please contact the
sender and delete all copies.
_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

Nicolai Hähnle-Montoro via llvm-dev

unread,
Jun 3, 2019, 5:36:34 AM6/3/19
to Lau, Luke, llvm...@lists.llvm.org
I briefly dug into this and I can reproduce it, the issue appears to
be the implementation of std::shuffle (which is called by llvm::sort
with expensive checks).

Sounds like you should file a bug against libstdc++.

Cheers,
Nicolai

--
Lerne, wie die Welt wirklich ist,
aber vergiss niemals, wie sie sein sollte.

Alexander Richardson via llvm-dev

unread,
Jun 3, 2019, 6:15:34 PM6/3/19
to Nicolai Hähnle-Montoro, llvm-dev, Lau, Luke
This looks like https://bugs.llvm.org/show_bug.cgi?id=37652 to me. I added a workaround (https://github.com/CTSRD-CHERI/llvm-project/commit/a7e68c6baf9967cfb288ca6c53c43b29581d27d8) to our fork but never got around to submitting a review.

If adding a copy of the libc++ implementation as llvm::shuffle seems like a valid approach I'll upload the patch to phabricator.

Alex

Teresa Johnson via llvm-dev

unread,
Jul 2, 2019, 10:20:05 PM7/2/19
to Alexander Richardson, llvm-dev, Lau, Luke
FYI I just hit this, but found that adding -DLLVM_OPTIMIZED_TABLEGEN=ON when I configured llvm fixed/hid the issue. Not sure why, but I found this flag when examining how one of the expensive-checks bots was configured.

Teresa
Teresa Johnson | Software Engineer | tejo...@google.com |
Reply all
Reply to author
Forward
0 new messages