[all-commits] [llvm/llvm-project] 9bf7ca: [RISCV] Fix sysroot tests without GCC on RISC-V ho...

Nick Desaulniers via All-commits all-commits at lists.llvm.org
Thu Jun 25 23:05:53 PDT 2020


  Branch: refs/heads/release/10.x
  Home:   https://github.com/llvm/llvm-project
  Commit: 9bf7ca2c92a8c78129e503956cc4c6e9db13bec5
      https://github.com/llvm/llvm-project/commit/9bf7ca2c92a8c78129e503956cc4c6e9db13bec5
  Author: Luís Marques <luismarques at lowrisc.org>
  Date:   2020-06-25 (Thu, 25 Jun 2020)

  Changed paths:
    M clang/test/Driver/riscv32-toolchain-extra.c
    M clang/test/Driver/riscv64-toolchain-extra.c

  Log Message:
  -----------
  [RISCV] Fix sysroot tests without GCC on RISC-V hosts with GCC

D68391 added tests that check scenarios where no RISC-V GCC toolchain is
supposed to be detected. When running the tests on RISC-V hosts the system's
GCC toolchain will be detected, and the tests will fail. This patch adds a
`--gcc-toolchain` option pointing to a path where no GCC toolchain is
present, ensuring that the tests are run under the expected conditions, and
therefore are able to pass in all test environments.

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

(cherry picked from commit 91f7f0d8e3ef2b6be07bc9621de075ff11c730c9)


  Commit: f8e49af4f1adcf457ea32e7164a126b10357cf4f
      https://github.com/llvm/llvm-project/commit/f8e49af4f1adcf457ea32e7164a126b10357cf4f
  Author: Alex Bradbury <asb at asbradbury.org>
  Date:   2020-06-25 (Thu, 25 Jun 2020)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
    M llvm/test/CodeGen/RISCV/atomic-cmpxchg.ll

  Log Message:
  -----------
  [LegalizeTypes][RISCV] Correctly sign-extend comparison for ATOMIC_CMP_XCHG

Currently, the comparison argument used for ATOMIC_CMP_XCHG is legalised
with GetPromotedInteger, which leaves the upper bits of the value
undefind. Since this is used for comparing in an LR/SC loop with a
full-width comparison, we must sign extend it on RISC-V.

This is related to https://reviews.llvm.org/D58829, which solved the
issue for ATOMIC_CMP_SWAP_WITH_SUCCESS, but not the simpler
ATOMIC_CMP_SWAP.

This patch is a modified form of
616289ed29225c0ddfe5699c7fdf42a0fcbe0ab4 by Jessica Clarke. It localises
the changes to LegalizeIntegerTypes and avoids adding a new virtual
method to TargetLowering to avoid changing the ABI of libLLVM.so.


  Commit: 71c14cd5aee72a7502a45068ec73487d1f9e019c
      https://github.com/llvm/llvm-project/commit/71c14cd5aee72a7502a45068ec73487d1f9e019c
  Author: Jim Lin <tclin914 at gmail.com>
  Date:   2020-06-25 (Thu, 25 Jun 2020)

  Changed paths:
    M clang/lib/CodeGen/TargetInfo.cpp
    M clang/test/CodeGen/riscv64-lp64-abi.c
    M clang/test/CodeGen/riscv64-lp64f-lp64d-abi.c

  Log Message:
  -----------
  [RISCV] Fix passing two floating-point values in complex separately by two GPRs on RV64

Summary:
This patch fixed the error of counting the remaining FPRs. Complex floating-point
values should be passed by two FPRs for the hard-float ABI. If no two FPRs are
available, it should be passed via a 64-bit GPR (fp+fp). `ArgFPRsLeft` is only
decreased one while the type is complex floating-point. It causes two floating-point
values in the complex are passed separately by two GPRs.

Reviewers: asb, luismarques, lenary

Reviewed By: asb

Subscribers: rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, s.egerton, pzheng, sameer.abuasal, apazos, evandro, cfe-commits

Tags: #clang

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

(cherry picked from commit 7ee479a760e0a4402b4eb7fb6168768a44f66945)


  Commit: 249fef00d925ce56d7eb1f6910064a586716cba4
      https://github.com/llvm/llvm-project/commit/249fef00d925ce56d7eb1f6910064a586716cba4
  Author: Kamlesh Kumar <kamleshbhalui at gmail.com>
  Date:   2020-06-25 (Thu, 25 Jun 2020)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVISelLowering.cpp
    M llvm/test/CodeGen/RISCV/rv64i-single-softfloat.ll

  Log Message:
  -----------
  [RISCV64] Emit correct lib call for fp(float/double) to ui/si

Since i32 is not legal in riscv64,
it always promoted to i64 before emitting lib call and
for conversions like float/double to int and float/double to unsigned int
wrong lib call was emitted. This commit fix it using custom lowering.

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

(cherry picked from commit 7622ea5835f0381a426e504f4c03f11733732b83)


  Commit: 5fa1f1e9f44b9f9f3ba8c777cc3fd72a7952be5e
      https://github.com/llvm/llvm-project/commit/5fa1f1e9f44b9f9f3ba8c777cc3fd72a7952be5e
  Author: kamlesh kumar <kamleshbhalui at gmail.com>
  Date:   2020-06-25 (Thu, 25 Jun 2020)

  Changed paths:
    A compiler-rt/lib/builtins/riscv/int_mul_impl.inc
    A compiler-rt/lib/builtins/riscv/muldi3.S
    M compiler-rt/lib/builtins/riscv/mulsi3.S

  Log Message:
  -----------
  [RISCV-V] Provide muldi3 builtin assembly implementation

Provides an assembly implementation of muldi3 for RISC-V, to solve bug 43388.
Since the implementation is the same as for mulsi3, that code was moved to
`riscv/int_mul_impl.inc` and is now reused by both `mulsi3.S` and `muldi3.S`.

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

(cherry picked from commit e31ccee1b01acf703889312ee86023ff87bd39fe)


  Commit: 43ca67c05d2881d00075a15de555af1b19370294
      https://github.com/llvm/llvm-project/commit/43ca67c05d2881d00075a15de555af1b19370294
  Author: Shiva Chen <shiva at andestech.com>
  Date:   2020-06-25 (Thu, 25 Jun 2020)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
    M llvm/test/CodeGen/RISCV/vararg.ll

  Log Message:
  -----------
  [RISCV] Fix incorrect FP base CFI offset for variable argument functions

When the FP exists, the FP base CFI directive offset should take the size of variable arguments into account.

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

(cherry picked from commit 64f417200e1020305f28f3c1e40691585f50f6ad)


  Commit: 04b0a4e22e3b4549f9d241f8a9f37eebecb62a31
      https://github.com/llvm/llvm-project/commit/04b0a4e22e3b4549f9d241f8a9f37eebecb62a31
  Author: Serge Guelton <sguelton at redhat.com>
  Date:   2020-06-25 (Thu, 25 Jun 2020)

  Changed paths:
    M llvm/lib/Extensions/Extensions.cpp

  Log Message:
  -----------
  Provide anchor for compiler extensions


  Commit: 69fb858731e857abcabe74dcf6db344030ca650b
      https://github.com/llvm/llvm-project/commit/69fb858731e857abcabe74dcf6db344030ca650b
  Author: Daniel Frampton <Daniel.Frampton at microsoft.com>
  Date:   2020-06-25 (Thu, 25 Jun 2020)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    A llvm/test/CodeGen/AArch64/funclet-match-add-sub-stack.ll

  Log Message:
  -----------
  [AArch64] Fix mismatch in prologue and epilogue for funclets on Windows

The generated code for a funclet can have an add to sp in the epilogue
for which there is no corresponding sub in the prologue.

This patch removes the early return from emitPrologue that was
preventing the sub to sp, and instead conditionalizes the appropriate
parts of the rest of the function.

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

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

(cherry picked from commit 522b4c4b88a5606b0074926e8658e7fede97c230)


  Commit: a110c3fc8cd9368627ce0386d7d16756be3d62ac
      https://github.com/llvm/llvm-project/commit/a110c3fc8cd9368627ce0386d7d16756be3d62ac
  Author: Daniel Frampton <Daniel.Frampton at microsoft.com>
  Date:   2020-06-25 (Thu, 25 Jun 2020)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    M llvm/test/CodeGen/AArch64/seh-finally.ll
    M llvm/test/CodeGen/AArch64/wineh-try-catch-cbz.ll
    M llvm/test/CodeGen/AArch64/wineh-try-catch-realign.ll
    M llvm/test/CodeGen/AArch64/wineh-try-catch.ll
    A llvm/test/CodeGen/AArch64/wineh-unwindhelp-via-fp.ll

  Log Message:
  -----------
  [AArch64] Change AArch64 Windows EH UnwindHelp object to be a fixed object

The UnwindHelp object is used during exception handling by runtime
code. It must be findable from a fixed offset from FP.

This change allocates the UnwindHelp object as a fixed object (as is
done for x86_64) to ensure that both the generated code and runtime
agree on the location of the object.

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

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

(cherry picked from commit 494abe139a9aab991582f1b3f3370b99b252944c)


  Commit: b294e611271abeb5c9c49d7fb216b9bdcc323872
      https://github.com/llvm/llvm-project/commit/b294e611271abeb5c9c49d7fb216b9bdcc323872
  Author: Nick Desaulniers <ndesaulniers at google.com>
  Date:   2020-06-25 (Thu, 25 Jun 2020)

  Changed paths:
    M llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
    M llvm/test/CodeGen/PowerPC/inlineasm-output-template.ll

  Log Message:
  -----------
  [PPCAsmPrinter] support 'L' output template for memory operands

Summary:
L is meant to support the second word used by 32b calling conventions for 64b arguments.

This is required for build 32b PowerPC Linux kernels after upstream
commit 334710b1496a ("powerpc/uaccess: Implement unsafe_put_user() using 'asm goto'")

Thanks for the report from @nathanchance, and reference to GCC's
implementation from @segher.

Fixes: pr/46186
Fixes: https://github.com/ClangBuiltLinux/linux/issues/1044

Reviewers: echristo, hfinkel, MaskRay

Reviewed By: MaskRay

Subscribers: MaskRay, wuzish, nemanjai, hiraditya, kbarton, steven.zhang, llvm-commits, segher, nathanchance, srhines

Tags: #llvm

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

(cherry picked from commit 2d8e105db6bea10a6b96e4a094e73a87987ef909)


Compare: https://github.com/llvm/llvm-project/compare/d24d5c8e308e...b294e611271a


More information about the All-commits mailing list