[PATCH] D98881: [RISCV] Fix mcount name for Linux

Nathan Chancellor via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Mar 18 17:41:50 PDT 2021


nathanchance added a comment.

Such a diff does not look too bad:

  diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h
  index 539466c4f678..c32972c1e04e 100644
  --- a/clang/lib/Basic/Targets/OSTargets.h
  +++ b/clang/lib/Basic/Targets/OSTargets.h
  @@ -256,6 +256,8 @@ public:
       case llvm::Triple::ppcle:
       case llvm::Triple::ppc64:
       case llvm::Triple::ppc64le:
  +    case llvm::Triple::riscv32:
  +    case llvm::Triple::riscv64:
         this->MCountName = "_mcount";
         break;
       case llvm::Triple::arm:
  @@ -488,6 +490,8 @@ public:
       case llvm::Triple::ppc:
       case llvm::Triple::ppc64:
       case llvm::Triple::ppc64le:
  +    case llvm::Triple::riscv32:
  +    case llvm::Triple::riscv64:
       case llvm::Triple::sparcv9:
         this->MCountName = "_mcount";
         break;
  @@ -885,7 +889,14 @@ protected:
   public:
     FuchsiaTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
         : OSTargetInfo<Target>(Triple, Opts) {
  -    this->MCountName = "__mcount";
  +    switch (Triple.getArch()) {
  +    case llvm::Triple::riscv32:
  +    case llvm::Triple::riscv64:
  +      break;
  +    default:
  +      this->MCountName = "__mcount";
  +      break;
  +    }
       this->TheCXXABI.set(TargetCXXABI::Fuchsia);
     }
   };
  diff --git a/clang/lib/Basic/Targets/RISCV.h b/clang/lib/Basic/Targets/RISCV.h
  index abae51e75a19..8df6e05ebcd5 100644
  --- a/clang/lib/Basic/Targets/RISCV.h
  +++ b/clang/lib/Basic/Targets/RISCV.h
  @@ -59,6 +59,7 @@ public:
       WCharType = SignedInt;
       WIntType = UnsignedInt;
       HasRISCVVTypes = true;
  +    MCountName = "_mcount";
     }
   
     bool setCPU(const std::string &Name) override {
  diff --git a/clang/test/CodeGen/mcount.c b/clang/test/CodeGen/mcount.c
  index 649f0b56949d..2883a6370d34 100644
  --- a/clang/test/CodeGen/mcount.c
  +++ b/clang/test/CodeGen/mcount.c
  @@ -12,6 +12,14 @@
   // RUN: %clang_cc1 -pg -triple mipsel-unknown-gnu-linux -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
   // RUN: %clang_cc1 -pg -triple mips64-unknown-gnu-linux -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
   // RUN: %clang_cc1 -pg -triple mips64el-unknown-gnu-linux -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
  +// RUN: %clang_cc1 -pg -triple riscv32 -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
  +// RUN: %clang_cc1 -pg -triple riscv64 -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
  +// RUN: %clang_cc1 -pg -triple riscv32-linux -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
  +// RUN: %clang_cc1 -pg -triple riscv64-linux -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
  +// RUN: %clang_cc1 -pg -triple riscv32-freebsd -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
  +// RUN: %clang_cc1 -pg -triple riscv64-freebsd -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
  +// RUN: %clang_cc1 -pg -triple riscv64-fuschia -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
  +// RUN: %clang_cc1 -pg -triple riscv64-openbsd -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-PREFIXED,NO-MCOUNT1 %s
   // RUN: %clang_cc1 -pg -triple powerpc-netbsd -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-DOUBLE-PREFIXED,NO-MCOUNT1 %s
   // RUN: %clang_cc1 -pg -triple powerpc64-netbsd -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-DOUBLE-PREFIXED,NO-MCOUNT1 %s
   // RUN: %clang_cc1 -pg -triple powerpc64le-netbsd -emit-llvm -o - %s | FileCheck -check-prefixes=CHECK-DOUBLE-PREFIXED,NO-MCOUNT1 %s


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D98881/new/

https://reviews.llvm.org/D98881



More information about the cfe-commits mailing list