bcain updated this revision to Diff 197317.
bcain changed the repository for this revision from rL LLVM to rG LLVM Github
Monorepo.
bcain added a comment.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Add context, add clang update.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D61130/new/
https://reviews.llvm.org/D61130
Files:
clang/tools/driver/cc1as_main.cpp
llvm/include/llvm/MC/MCContext.h
llvm/lib/CodeGen/MachineModuleInfo.cpp
llvm/lib/MC/MCContext.cpp
llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
llvm/test/MC/Hexagon/nowarn.s
llvm/tools/llvm-mc/llvm-mc.cpp
Index: llvm/tools/llvm-mc/llvm-mc.cpp
===
--- llvm/tools/llvm-mc/llvm-mc.cpp
+++ llvm/tools/llvm-mc/llvm-mc.cpp
@@ -279,7 +279,7 @@
static int AssembleInput(const char *ProgName, const Target *TheTarget,
SourceMgr , MCContext , MCStreamer ,
MCAsmInfo , MCSubtargetInfo ,
- MCInstrInfo , MCTargetOptions ) {
+ MCInstrInfo , MCTargetOptions const ) {
std::unique_ptr Parser(
createMCAsmParser(SrcMgr, Ctx, Str, MAI));
std::unique_ptr TAP(
@@ -316,7 +316,7 @@
cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVersion);
cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n");
- MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
+ const MCTargetOptions MCOptions = InitMCTargetOptionsFromFlags();
setDwarfDebugFlags(argc, argv);
setDwarfDebugProducer();
@@ -368,7 +368,7 @@
// FIXME: This is not pretty. MCContext has a ptr to MCObjectFileInfo and
// MCObjectFileInfo needs a MCContext reference in order to initialize itself.
MCObjectFileInfo MOFI;
- MCContext Ctx(MAI.get(), MRI.get(), , );
+ MCContext Ctx(MAI.get(), MRI.get(), , , );
MOFI.InitMCObjectFileInfo(TheTriple, PIC, Ctx, LargeCodeModel);
if (SaveTempLabels)
Index: llvm/test/MC/Hexagon/nowarn.s
===
--- /dev/null
+++ llvm/test/MC/Hexagon/nowarn.s
@@ -0,0 +1,19 @@
+# RUN: llvm-mc -arch=hexagon -mhvx --filetype=asm %s -o - 2>&1 | FileCheck %s
+# RUN: llvm-mc --no-warn -arch=hexagon -mhvx --filetype=obj %s -o - | llvm-objdump -d - | FileCheck --check-prefix=CHECK-NOWARN %s
+# RUN: not llvm-mc --fatal-warnings -arch=hexagon -mhvx --filetype=asm %s 2>&1 | FileCheck --check-prefix=CHECK-FATAL-WARN %s
+
+ .text
+.warning
+
+{
+ v7.tmp = vmem(r28 + #3)
+ v7:6.w = vadd(v17:16.w, v17:16.w)
+ v17:16.uw = vunpack(v8.uh)
+}
+
+# CHECK-NOWARN-NOT: warning
+# CHECK-FATAL-WARN-NOT: warning
+# CHECK-FATAL-WARN: error
+# CHECK-FATAL-WARN: error
+# CHECK: warning:
+# CHECK: warning:
Index: llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
===
--- llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
+++ llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
@@ -727,9 +727,6 @@
}
void HexagonMCChecker::reportWarning(Twine const ) {
- if (ReportErrors) {
-auto SM = Context.getSourceManager();
-if (SM)
- SM->PrintMessage(MCB.getLoc(), SourceMgr::DK_Warning, Msg);
- }
+ if (ReportErrors)
+Context.reportWarning(MCB.getLoc(), Msg);
}
Index: llvm/lib/MC/MCContext.cpp
===
--- llvm/lib/MC/MCContext.cpp
+++ llvm/lib/MC/MCContext.cpp
@@ -56,11 +56,11 @@
MCContext::MCContext(const MCAsmInfo *mai, const MCRegisterInfo *mri,
const MCObjectFileInfo *mofi, const SourceMgr *mgr,
- bool DoAutoReset)
+ MCTargetOptions const *TargetOpts, bool DoAutoReset)
: SrcMgr(mgr), InlineSrcMgr(nullptr), MAI(mai), MRI(mri), MOFI(mofi),
Symbols(Allocator), UsedNames(Allocator),
CurrentDwarfLoc(0, 0, 0, DWARF2_FLAG_IS_STMT, 0, 0),
- AutoReset(DoAutoReset) {
+ AutoReset(DoAutoReset), TargetOptions(TargetOpts) {
SecureLogFile = AsSecureLogFileName;
if (SrcMgr && SrcMgr->getNumBuffers())
@@ -652,6 +652,21 @@
report_fatal_error(Msg, false);
}
+void MCContext::reportWarning(SMLoc Loc, const Twine ) {
+ if (TargetOptions && TargetOptions->MCNoWarn)
+return;
+ if (TargetOptions && TargetOptions->MCFatalWarnings)
+reportError(Loc, Msg);
+ else {
+// If we have a source manager use it. Otherwise, try using the inline
+// source manager.
+if (SrcMgr)
+ SrcMgr->PrintMessage(Loc, SourceMgr::DK_Warning, Msg);
+else if (InlineSrcMgr)
+ InlineSrcMgr->PrintMessage(Loc, SourceMgr::DK_Warning, Msg);
+ }
+}
+
void MCContext::reportFatalError(SMLoc Loc, const Twine ) {
reportError(Loc, Msg);
Index: llvm/lib/CodeGen/MachineModuleInfo.cpp
===
---