[EABI] Add Clang support for -meabi flag
The -meabi flag to control LLVM EABI version. Without '-meabi' or with '-meabi default' imply LLVM triple default. With '-meabi gnu' sets EABI GNU. With '-meabi 4' or '-meabi 5' set EABI version 4 and 5 respectively. A similar patch was introduced in LLVM. Patch by Vinicius Tinti. llvm-svn: 252463
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
#include "llvm/Support/Host.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
#include "llvm/Support/Process.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
#include <atomic>
|
||||
#include <memory>
|
||||
#include <sys/stat.h>
|
||||
@@ -456,6 +457,20 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
||||
Opts.DisableFree = Args.hasArg(OPT_disable_free);
|
||||
Opts.DisableTailCalls = Args.hasArg(OPT_mdisable_tail_calls);
|
||||
Opts.FloatABI = Args.getLastArgValue(OPT_mfloat_abi);
|
||||
if (Arg *A = Args.getLastArg(OPT_meabi)) {
|
||||
StringRef Value = A->getValue();
|
||||
llvm::EABI EABIVersion = llvm::StringSwitch<llvm::EABI>(Value)
|
||||
.Case("default", llvm::EABI::Default)
|
||||
.Case("4", llvm::EABI::EABI4)
|
||||
.Case("5", llvm::EABI::EABI5)
|
||||
.Case("gnu", llvm::EABI::GNU)
|
||||
.Default(llvm::EABI::Unknown);
|
||||
if (EABIVersion == llvm::EABI::Unknown)
|
||||
Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args)
|
||||
<< Value;
|
||||
else
|
||||
Opts.EABIVersion = Value;
|
||||
}
|
||||
Opts.LessPreciseFPMAD = Args.hasArg(OPT_cl_mad_enable);
|
||||
Opts.LimitFloatPrecision = Args.getLastArgValue(OPT_mlimit_float_precision);
|
||||
Opts.NoInfsFPMath = (Args.hasArg(OPT_menable_no_infinities) ||
|
||||
|
||||
Reference in New Issue
Block a user