[all-commits] [llvm/llvm-project] 8cf677: [RISC-V] Implement RISCVInstrInfo::isCopyInstrImpl()

Alexander Richardson via All-commits all-commits at lists.llvm.org
Mon Sep 21 02:22:00 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 8cf6778d3040b33db768bb7542630d9820a72e28
      https://github.com/llvm/llvm-project/commit/8cf6778d3040b33db768bb7542630d9820a72e28
  Author: Alex Richardson <Alexander.Richardson at cl.cam.ac.uk>
  Date:   2020-09-21 (Mon, 21 Sep 2020)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
    M llvm/lib/Target/RISCV/RISCVInstrInfo.h

  Log Message:
  -----------
  [RISC-V] Implement RISCVInstrInfo::isCopyInstrImpl()

This does not result in changes for any of the current tests, but it might
improve debug information in some cases.

Reviewed By: luismarques

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


  Commit: aa85c6f2a528792e2ff778a36fb6f35a01e8191c
      https://github.com/llvm/llvm-project/commit/aa85c6f2a528792e2ff778a36fb6f35a01e8191c
  Author: Alex Richardson <Alexander.Richardson at cl.cam.ac.uk>
  Date:   2020-09-21 (Mon, 21 Sep 2020)

  Changed paths:
    M compiler-rt/lib/builtins/atomic.c

  Log Message:
  -----------
  [compiler-rt] Fix atomic support functions on 32-bit architectures

The code currently uses __c11_atomic_is_lock_free() to detect whether an
atomic operation is natively supported. However, this can result in a
runtime function call to determine whether the given operation is lock-free
and clang generating a call to e.g. __atomic_load_8 since the branch is
not a constant zero. Since we are implementing those runtime functions, we
must avoid those calls. This patch replaces __c11_atomic_is_lock_free()
with __atomic_always_lock_free() which always results in a compile-time
constant value. This problem was found while compiling atomic.c for MIPS32
since the -Watomic-alignment warning was being triggered and objdump showed
an undefined reference to _atomic_is_lock_free.

In addition to fixing 32-bit platforms this also enables the 16-byte case
that was disabled in r153779 (185f2edd70a34d28b305df0cd8ce519ecbca2cfd).

Reviewed By: efriedma

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


Compare: https://github.com/llvm/llvm-project/compare/fa6da90aef00...aa85c6f2a528


More information about the All-commits mailing list