Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 May 2019 09:57:30 +0000
From:      bugzilla-noreply@freebsd.org
To:        toolchain@FreeBSD.org
Subject:   [Bug 237784] devel/avro-c: clang crashes during build on armv6 with -fstack-protector-strong
Message-ID:  <bug-237784-29464-n4eyAJassf@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-237784-29464@https.bugs.freebsd.org/bugzilla/>
References:  <bug-237784-29464@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D237784

--- Comment #4 from commit-hook@freebsd.org ---
A commit references this bug:

Author: dim
Date: Sat May 11 09:57:00 UTC 2019
New revision: 347486
URL: https://svnweb.freebsd.org/changeset/base/347486

Log:
  MFC r347243:

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

    [ARM] Glue register copies to tail calls.

    This generally follows what other targets do. I don't completely
    understand why the special case for tail calls existed in the first
    place; even when the code was committed in r105413, call lowering
    didn't work in the way described in the comments.

    Stack protector lowering breaks if the register copies are not glued
    to a tail call: we have to insert the stack protector check before
    the tail call, and we choose the location based on the assumption
    that all physical register dependencies of a tail call are adjacent
    to the tail call. (See FindSplitPointForStackProtector.) This is sort
    of fragile, but I don't see any reason to break that assumption.

    I'm guessing nobody has seen this before just because it's hard to
    convince the scheduler to actually schedule the code in a way that
    breaks; even without the glue, the only computation that could
    actually be scheduled after the register copies is the computation of
    the call address, and the scheduler usually prefers to schedule that
    before the copies anyway.

    Fixes https://bugs.llvm.org/show_bug.cgi?id=3D41417

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

  This should fix several instances of "Bad machine code: Using an
  undefined physical register", when compiling ports such as
  multimedia/vlc, audio/alsa-lib and devel/avro-c for armv6, with
  -fstack-protector-strong.

  Reported by:  jbeich
  PR:           237074, 237783, 237784

Changes:
_U  stable/11/
  stable/11/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
_U  stable/12/
  stable/12/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-237784-29464-n4eyAJassf>