summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin LeMahieu <colinl@codeaurora.org>2015-07-27 22:39:14 +0000
committerColin LeMahieu <colinl@codeaurora.org>2015-07-27 22:39:14 +0000
commitfe36f83b119784b0b9a8da3730271bccd199b29e (patch)
tree345af55b4672381a6468df79927253030deadfef
parent7bdf4f2eb2c3404fb97a08c43f656947821f0f0e (diff)
downloadbcm5719-llvm-fe36f83b119784b0b9a8da3730271bccd199b29e.tar.gz
bcm5719-llvm-fe36f83b119784b0b9a8da3730271bccd199b29e.zip
[llvm-mc] Add --no-warn flag with -W alias to disable outputting warnings while assembling.
llvm-svn: 243338
-rw-r--r--llvm/include/llvm/MC/MCTargetOptions.h2
-rw-r--r--llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h4
-rw-r--r--llvm/lib/MC/MCParser/AsmParser.cpp2
-rw-r--r--llvm/lib/MC/MCTargetOptions.cpp2
-rw-r--r--llvm/test/tools/llvm-mc/no_warnings.test5
5 files changed, 14 insertions, 1 deletions
diff --git a/llvm/include/llvm/MC/MCTargetOptions.h b/llvm/include/llvm/MC/MCTargetOptions.h
index 7f4f23eda27..00a74de9d06 100644
--- a/llvm/include/llvm/MC/MCTargetOptions.h
+++ b/llvm/include/llvm/MC/MCTargetOptions.h
@@ -29,6 +29,7 @@ public:
bool MCRelaxAll : 1;
bool MCNoExecStack : 1;
bool MCFatalWarnings : 1;
+ bool MCNoWarn : 1;
bool MCSaveTempLabels : 1;
bool MCUseDwarfDirectory : 1;
bool ShowMCEncoding : 1;
@@ -49,6 +50,7 @@ inline bool operator==(const MCTargetOptions &LHS, const MCTargetOptions &RHS) {
ARE_EQUAL(MCRelaxAll) &&
ARE_EQUAL(MCNoExecStack) &&
ARE_EQUAL(MCFatalWarnings) &&
+ ARE_EQUAL(MCNoWarn) &&
ARE_EQUAL(MCSaveTempLabels) &&
ARE_EQUAL(MCUseDwarfDirectory) &&
ARE_EQUAL(ShowMCEncoding) &&
diff --git a/llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h b/llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h
index 1c08d1722f0..1240e135ea0 100644
--- a/llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h
+++ b/llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h
@@ -43,6 +43,9 @@ cl::opt<bool> ShowMCInst("asm-show-inst",
cl::opt<bool> FatalWarnings("fatal-warnings",
cl::desc("Treat warnings as errors"));
+cl::opt<bool> NoWarn("no-warn", cl::desc("Suppress all warnings"));
+cl::alias NoWarnW("W", cl::desc("Alias for --no-warn"), cl::aliasopt(NoWarn));
+
cl::opt<std::string>
ABIName("target-abi", cl::Hidden,
cl::desc("The name of the ABI to be targeted from the backend."),
@@ -57,6 +60,7 @@ static inline MCTargetOptions InitMCTargetOptionsFromFlags() {
Options.ShowMCInst = ShowMCInst;
Options.ABIName = ABIName;
Options.MCFatalWarnings = FatalWarnings;
+ Options.MCNoWarn = NoWarn;
return Options;
}
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index 04d141389c9..3f45b3d85a3 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -553,6 +553,8 @@ void AsmParser::Note(SMLoc L, const Twine &Msg, ArrayRef<SMRange> Ranges) {
}
bool AsmParser::Warning(SMLoc L, const Twine &Msg, ArrayRef<SMRange> Ranges) {
+ if(getTargetParser().getTargetOptions().MCNoWarn)
+ return false;
if (getTargetParser().getTargetOptions().MCFatalWarnings)
return Error(L, Msg, Ranges);
printMessage(L, SourceMgr::DK_Warning, Msg, Ranges);
diff --git a/llvm/lib/MC/MCTargetOptions.cpp b/llvm/lib/MC/MCTargetOptions.cpp
index 1258d9e29f2..64796af10c8 100644
--- a/llvm/lib/MC/MCTargetOptions.cpp
+++ b/llvm/lib/MC/MCTargetOptions.cpp
@@ -14,7 +14,7 @@ namespace llvm {
MCTargetOptions::MCTargetOptions()
: SanitizeAddress(false), MCRelaxAll(false), MCNoExecStack(false),
- MCFatalWarnings(false), MCSaveTempLabels(false),
+ MCFatalWarnings(false), MCNoWarn(false), MCSaveTempLabels(false),
MCUseDwarfDirectory(false), ShowMCEncoding(false), ShowMCInst(false),
AsmVerbose(false), DwarfVersion(0), ABIName() {}
diff --git a/llvm/test/tools/llvm-mc/no_warnings.test b/llvm/test/tools/llvm-mc/no_warnings.test
new file mode 100644
index 00000000000..f542f1773c0
--- /dev/null
+++ b/llvm/test/tools/llvm-mc/no_warnings.test
@@ -0,0 +1,5 @@
+# RUN: llvm-mc --no-warn %s 2>&1 | FileCheck %s
+# XFAIL: hexagon
+
+# CHECK-NOT: warning:
+.warning
OpenPOWER on IntegriCloud