Bug 236567 - lang/spidermonkey170, lang/spidermonkey38: clang 8 crashes during build on armv7 and armv6
Summary: lang/spidermonkey170, lang/spidermonkey38: clang 8 crashes during build on ar...
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: arm Any
: --- Affects Only Me
Assignee: freebsd-toolchain (Nobody)
URL:
Keywords: needs-qa
Depends on:
Blocks: 236062
  Show dependency treegraph
 
Reported: 2019-03-16 04:17 UTC by Jan Beich
Modified: 2019-09-09 18:10 UTC (History)
3 users (show)

See Also:
bugzilla: maintainer-feedback? (kwm)


Attachments
vm/Interpreter.cpp (compressed, preprocessed) (970.19 KB, application/x-xz)
2019-03-16 04:19 UTC, Jan Beich
no flags Details
command line args (for clang 8) (4.24 KB, text/plain)
2019-03-16 04:20 UTC, Jan Beich
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Beich freebsd_committer freebsd_triage 2019-03-16 04:17:52 UTC
$ poudriere jail -cj head-armv7 -x -a arm.armv7 -v head -m svn+https
$ poudriere testport -j head-armv7 lang/spidermonkey38
[...]
Unable to predicate BX killed renamable $r0
!
UNREACHABLE executed at /usr/src/contrib/llvm/lib/CodeGen/IfConversion.cpp:2022!
c++: error: unable to execute command: Abort trap (core dumped)
c++: error: clang frontend command failed due to signal (use -v to see invocation)
FreeBSD clang version 8.0.0 (branches/release_80 355677) (based on LLVM 8.0.0)
Target: armv7-unknown-freebsd13.0-gnueabihf
Thread model: posix
InstalledDir: /usr/bin

http://www.ipv6proxy.net/go.php?u=http://beefy16.nyi.freebsd.org/data/head-armv7-default/p495093_s344952/logs/errors/spidermonkey170-17.0.0_8.log
http://www.ipv6proxy.net/go.php?u=http://beefy16.nyi.freebsd.org/data/head-armv7-default/p495093_s344952/logs/errors/spidermonkey38-38.8.0_9.log
http://beefy8.nyi.freebsd.org/data/head-armv6-default/p495404_s345044/logs/errors/spidermonkey38-38.8.0_9.log
http://beefy8.nyi.freebsd.org/data/head-armv6-default/p495404_s345044/logs/errors/spidermonkey170-17.0.0_8.log

Also affects some other ports (found only where qemu-user-static didn't hang):

http://www.ipv6proxy.net/go.php?u=http://beefy16.nyi.freebsd.org/data/head-armv7-default/p495093_s344952/logs/errors/palemoon-27.9.4_4.log
http://www.ipv6proxy.net/go.php?u=http://beefy16.nyi.freebsd.org/data/head-armv7-default/p495093_s344952/logs/errors/seamonkey-2.49.4_24.log
http://beefy8.nyi.freebsd.org/data/head-armv6-default/p495404_s345044/logs/errors/erlang-riak-16.b.02.log
Comment 1 Jan Beich freebsd_committer freebsd_triage 2019-03-16 04:19:53 UTC
Created attachment 202899 [details]
vm/Interpreter.cpp (compressed, preprocessed)
Comment 2 Jan Beich freebsd_committer freebsd_triage 2019-03-16 04:20:18 UTC
Created attachment 202900 [details]
command line args (for clang 8)
Comment 3 Dimitry Andric freebsd_committer freebsd_triage 2019-03-18 09:59:07 UTC
Reproduced, minimized and submitted upstream here:

https://bugs.llvm.org/show_bug.cgi?id=41121
Comment 4 commit-hook freebsd_committer freebsd_triage 2019-09-06 16:07:29 UTC
A commit references this bug:

Author: dim
Date: Fri Sep  6 16:06:38 UTC 2019
New revision: 351938
URL: https://svnweb.freebsd.org/changeset/base/351938

Log:
  Pull in r371111 from upstream llvm trunk (by Eli Friedman):

    [IfConversion] Fix diamond conversion with unanalyzable branches.

    The code was incorrectly counting the number of identical
    instructions, and therefore tried to predicate an instruction which
    should not have been predicated.  This could have various effects: a
    compiler crash, an assembler failure, a miscompile, or just
    generating an extra, unnecessary instruction.

    Instead of depending on TargetInstrInfo::removeBranch, which only
    works on analyzable branches, just remove all branch instructions.

    Fixes https://bugs.llvm.org/show_bug.cgi?id=43121 and
    https://bugs.llvm.org/show_bug.cgi?id=41121 .

    Differential Revision: https://reviews.llvm.org/D67203

  This should fix "Unable to predicate BX killed renamable $r0" errors
  when building the lang/spidermonkey170 and lang/spidermonkey38 ports for
  armv7 and armv6.

  PR:		236567
  MFC after:	3 days

Changes:
  head/contrib/llvm/lib/CodeGen/IfConversion.cpp
Comment 5 commit-hook freebsd_committer freebsd_triage 2019-09-09 17:59:01 UTC
A commit references this bug:

Author: dim
Date: Mon Sep  9 17:58:27 UTC 2019
New revision: 352089
URL: https://svnweb.freebsd.org/changeset/base/352089

Log:
  MFC r351938:

  Pull in r371111 from upstream llvm trunk (by Eli Friedman):

    [IfConversion] Fix diamond conversion with unanalyzable branches.

    The code was incorrectly counting the number of identical
    instructions, and therefore tried to predicate an instruction which
    should not have been predicated.  This could have various effects: a
    compiler crash, an assembler failure, a miscompile, or just
    generating an extra, unnecessary instruction.

    Instead of depending on TargetInstrInfo::removeBranch, which only
    works on analyzable branches, just remove all branch instructions.

    Fixes https://bugs.llvm.org/show_bug.cgi?id=43121 and
    https://bugs.llvm.org/show_bug.cgi?id=41121 .

    Differential Revision: https://reviews.llvm.org/D67203

  This should fix "Unable to predicate BX killed renamable $r0" errors
  when building the lang/spidermonkey170 and lang/spidermonkey38 ports for
  armv7 and armv6.

  PR:		236567

Changes:
_U  stable/11/
  stable/11/contrib/llvm/lib/CodeGen/IfConversion.cpp
_U  stable/12/
  stable/12/contrib/llvm/lib/CodeGen/IfConversion.cpp