mirror of https://github.com/microsoft/clang.git
[RISCV] Add -mrelax/-mno-relax flags to enable/disable RISCV linker relaxation
Differential Revision: https://reviews.llvm.org/D44888 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@333385 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
45a3948091
commit
2c6477ebd3
|
@ -151,6 +151,8 @@ def m_wasm_Features_Group : OptionGroup<"<wasm features group>">,
|
||||||
Group<m_Group>, DocName<"WebAssembly">;
|
Group<m_Group>, DocName<"WebAssembly">;
|
||||||
def m_x86_Features_Group : OptionGroup<"<x86 features group>">,
|
def m_x86_Features_Group : OptionGroup<"<x86 features group>">,
|
||||||
Group<m_Group>, Flags<[CoreOption]>, DocName<"X86">;
|
Group<m_Group>, Flags<[CoreOption]>, DocName<"X86">;
|
||||||
|
def m_riscv_Features_Group : OptionGroup<"<riscv features group>">,
|
||||||
|
Group<m_Group>, DocName<"RISCV">;
|
||||||
|
|
||||||
def m_libc_Group : OptionGroup<"<m libc group>">, Group<m_mips_Features_Group>,
|
def m_libc_Group : OptionGroup<"<m libc group>">, Group<m_mips_Features_Group>,
|
||||||
Flags<[HelpHidden]>;
|
Flags<[HelpHidden]>;
|
||||||
|
@ -1947,6 +1949,11 @@ def mno_rtd: Flag<["-"], "mno-rtd">, Group<m_Group>;
|
||||||
def mno_soft_float : Flag<["-"], "mno-soft-float">, Group<m_Group>;
|
def mno_soft_float : Flag<["-"], "mno-soft-float">, Group<m_Group>;
|
||||||
def mno_stackrealign : Flag<["-"], "mno-stackrealign">, Group<m_Group>;
|
def mno_stackrealign : Flag<["-"], "mno-stackrealign">, Group<m_Group>;
|
||||||
|
|
||||||
|
def mrelax : Flag<["-"], "mrelax">, Group<m_riscv_Features_Group>,
|
||||||
|
HelpText<"Enable linker relaxation">;
|
||||||
|
def mno_relax : Flag<["-"], "mno-relax">, Group<m_riscv_Features_Group>,
|
||||||
|
HelpText<"Disable linker relaxation">;
|
||||||
|
|
||||||
def munaligned_access : Flag<["-"], "munaligned-access">, Group<m_arm_Features_Group>,
|
def munaligned_access : Flag<["-"], "munaligned-access">, Group<m_arm_Features_Group>,
|
||||||
HelpText<"Allow memory accesses to be unaligned (AArch32/AArch64 only)">;
|
HelpText<"Allow memory accesses to be unaligned (AArch32/AArch64 only)">;
|
||||||
def mno_unaligned_access : Flag<["-"], "mno-unaligned-access">, Group<m_arm_Features_Group>,
|
def mno_unaligned_access : Flag<["-"], "mno-unaligned-access">, Group<m_arm_Features_Group>,
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "llvm/Option/ArgList.h"
|
#include "llvm/Option/ArgList.h"
|
||||||
#include "llvm/Support/TargetParser.h"
|
#include "llvm/Support/TargetParser.h"
|
||||||
#include "llvm/Support/raw_ostream.h"
|
#include "llvm/Support/raw_ostream.h"
|
||||||
|
#include "ToolChains/CommonArgs.h"
|
||||||
|
|
||||||
using namespace clang::driver;
|
using namespace clang::driver;
|
||||||
using namespace clang::driver::tools;
|
using namespace clang::driver::tools;
|
||||||
|
@ -363,6 +364,10 @@ void riscv::getRISCVTargetFeatures(const Driver &D, const ArgList &Args,
|
||||||
// Handle all other types of extensions.
|
// Handle all other types of extensions.
|
||||||
getExtensionFeatures(D, Args, Features, MArch, OtherExts);
|
getExtensionFeatures(D, Args, Features, MArch, OtherExts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Now add any that the user explicitly requested on the command line,
|
||||||
|
// which may override the defaults.
|
||||||
|
handleTargetFeaturesGroup(Args, Features, options::OPT_m_riscv_Features_Group);
|
||||||
}
|
}
|
||||||
|
|
||||||
StringRef riscv::getRISCVABI(const ArgList &Args, const llvm::Triple &Triple) {
|
StringRef riscv::getRISCVABI(const ArgList &Args, const llvm::Triple &Triple) {
|
||||||
|
|
|
@ -2,3 +2,12 @@
|
||||||
// RUN: %clang -target riscv64-unknown-elf -### %s -fsyntax-only 2>&1 | FileCheck %s
|
// RUN: %clang -target riscv64-unknown-elf -### %s -fsyntax-only 2>&1 | FileCheck %s
|
||||||
|
|
||||||
// CHECK: fno-signed-char
|
// CHECK: fno-signed-char
|
||||||
|
|
||||||
|
// RUN: %clang -target riscv32-unknown-elf -### %s -mrelax 2>&1 | FileCheck %s -check-prefix=RELAX
|
||||||
|
// RUN: %clang -target riscv32-unknown-elf -### %s -mno-relax 2>&1 | FileCheck %s -check-prefix=NO-RELAX
|
||||||
|
// RUN: %clang -target riscv32-unknown-elf -### %s 2>&1 | FileCheck %s -check-prefix=DEFAULT
|
||||||
|
|
||||||
|
// RELAX: "-target-feature" "+relax"
|
||||||
|
// NO-RELAX: "-target-feature" "-relax"
|
||||||
|
// DEFAULT-NOT: "-target-feature" "+relax"
|
||||||
|
// DEFAULT-NOT: "-target-feature" "-relax"
|
||||||
|
|
Loading…
Reference in New Issue