[llvm] r259016 - Revert r258951 (and r258950), "Refactor backend diagnostics for unsupported features"
JF Bastien via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 27 21:13:24 PST 2016
This broke the WebAssembly build, fixed in r259020.
On Wed, Jan 27, 2016 at 8:41 PM, NAKAMURA Takumi via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: chapuni
> Date: Wed Jan 27 22:41:32 2016
> New Revision: 259016
>
> URL: http://llvm.org/viewvc/llvm-project?rev=259016&view=rev
> Log:
> Revert r258951 (and r258950), "Refactor backend diagnostics for
> unsupported features"
>
> It broke layering violation in LLVMIR.
>
> clang r258950 "Add backend dignostic printer for unsupported features"
> llvm r258951 "Refactor backend diagnostics for unsupported features"
>
> Added:
> llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.cpp
> llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.h
> Removed:
> llvm/trunk/lib/CodeGen/DiagnosticInfoCodeGen.cpp
> Modified:
> llvm/trunk/include/llvm/IR/DiagnosticInfo.h
> llvm/trunk/lib/CodeGen/CMakeLists.txt
> llvm/trunk/lib/IR/DiagnosticInfo.cpp
> llvm/trunk/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
> llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
> llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt
> llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp
> llvm/trunk/lib/Target/BPF/BPFISelLowering.cpp
> llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
> llvm/trunk/test/CodeGen/AMDGPU/addrspacecast.ll
> llvm/trunk/test/CodeGen/AMDGPU/call.ll
> llvm/trunk/test/CodeGen/AMDGPU/dynamic_stackalloc.ll
> llvm/trunk/test/CodeGen/AMDGPU/global-zero-initializer.ll
> llvm/trunk/test/CodeGen/AMDGPU/lds-initializer.ll
> llvm/trunk/test/CodeGen/AMDGPU/lds-zero-initializer.ll
> llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.dispatch.ptr.ll
> llvm/trunk/test/CodeGen/AMDGPU/no-hsa-graphics-shaders.ll
> llvm/trunk/test/CodeGen/AMDGPU/promote-alloca-bitcast-function.ll
>
> Modified: llvm/trunk/include/llvm/IR/DiagnosticInfo.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DiagnosticInfo.h?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/DiagnosticInfo.h (original)
> +++ llvm/trunk/include/llvm/IR/DiagnosticInfo.h Wed Jan 27 22:41:32 2016
> @@ -16,7 +16,6 @@
> #define LLVM_IR_DIAGNOSTICINFO_H
>
> #include "llvm/ADT/ArrayRef.h"
> -#include "llvm/CodeGen/SelectionDAG.h"
> #include "llvm/IR/DebugLoc.h"
> #include "llvm/IR/Module.h"
> #include "llvm/Support/Casting.h"
> @@ -61,7 +60,6 @@ enum DiagnosticKind {
> DK_OptimizationFailure,
> DK_MIRParser,
> DK_PGOProfile,
> - DK_Unsupported,
> DK_FirstPluginKind
> };
>
> @@ -277,42 +275,8 @@ private:
> const Twine &Msg;
> };
>
> -/// Common features for diagnostics with an associated DebugLoc
> -class DiagnosticInfoWithDebugLocBase : public DiagnosticInfo {
> -public:
> - /// \p Fn is the function where the diagnostic is being emitted. \p
> DLoc is
> - /// the location information to use in the diagnostic.
> - DiagnosticInfoWithDebugLocBase(enum DiagnosticKind Kind,
> - enum DiagnosticSeverity Severity,
> - const Function &Fn,
> - const DebugLoc &DLoc)
> - : DiagnosticInfo(Kind, Severity), Fn(Fn), DLoc(DLoc) {}
> -
> - /// Return true if location information is available for this
> diagnostic.
> - bool isLocationAvailable() const;
> -
> - /// Return a string with the location information for this diagnostic
> - /// in the format "file:line:col". If location information is not
> available,
> - /// it returns "<unknown>:0:0".
> - const std::string getLocationStr() const;
> -
> - /// Return location information for this diagnostic in three parts:
> - /// the source file name, line number and column.
> - void getLocation(StringRef *Filename, unsigned *Line, unsigned *Column)
> const;
> -
> - const Function &getFunction() const { return Fn; }
> - const DebugLoc &getDebugLoc() const { return DLoc; }
> -
> -private:
> - /// Function where this diagnostic is triggered.
> - const Function &Fn;
> -
> - /// Debug location where this diagnostic is triggered.
> - DebugLoc DLoc;
> -};
> -
> /// Common features for diagnostics dealing with optimization remarks.
> -class DiagnosticInfoOptimizationBase : public
> DiagnosticInfoWithDebugLocBase {
> +class DiagnosticInfoOptimizationBase : public DiagnosticInfo {
> public:
> /// \p PassName is the name of the pass emitting this diagnostic.
> /// \p Fn is the function where the diagnostic is being emitted. \p
> DLoc is
> @@ -325,8 +289,8 @@ public:
> enum DiagnosticSeverity Severity,
> const char *PassName, const Function &Fn,
> const DebugLoc &DLoc, const Twine &Msg)
> - : DiagnosticInfoWithDebugLocBase(Kind, Severity, Fn, DLoc),
> - PassName(PassName), Msg(Msg) {}
> + : DiagnosticInfo(Kind, Severity), PassName(PassName), Fn(Fn),
> DLoc(DLoc),
> + Msg(Msg) {}
>
> /// \see DiagnosticInfo::print.
> void print(DiagnosticPrinter &DP) const override;
> @@ -338,7 +302,21 @@ public:
> /// in BackendConsumer::OptimizationRemarkHandler).
> virtual bool isEnabled() const = 0;
>
> + /// Return true if location information is available for this
> diagnostic.
> + bool isLocationAvailable() const;
> +
> + /// Return a string with the location information for this diagnostic
> + /// in the format "file:line:col". If location information is not
> available,
> + /// it returns "<unknown>:0:0".
> + const std::string getLocationStr() const;
> +
> + /// Return location information for this diagnostic in three parts:
> + /// the source file name, line number and column.
> + void getLocation(StringRef *Filename, unsigned *Line, unsigned *Column)
> const;
> +
> const char *getPassName() const { return PassName; }
> + const Function &getFunction() const { return Fn; }
> + const DebugLoc &getDebugLoc() const { return DLoc; }
> const Twine &getMsg() const { return Msg; }
>
> private:
> @@ -347,6 +325,12 @@ private:
> /// be emitted.
> const char *PassName;
>
> + /// Function where this diagnostic is triggered.
> + const Function &Fn;
> +
> + /// Debug location where this diagnostic is triggered.
> + DebugLoc DLoc;
> +
> /// Message to report.
> const Twine &Msg;
> };
> @@ -588,35 +572,6 @@ public:
> bool isEnabled() const override;
> };
>
> -/// Diagnostic information for unsupported feature in backend.
> -class DiagnosticInfoUnsupported
> - : public DiagnosticInfoWithDebugLocBase {
> -private:
> - const Twine &Msg;
> - const SDValue Value;
> -
> -public:
> - /// \p Fn is the function where the diagnostic is being emitted. \p
> DLoc is
> - /// the location information to use in the diagnostic. If line table
> - /// information is available, the diagnostic will include the source
> code
> - /// location. \p Msg is the message to show. Note that this class does
> not
> - /// copy this message, so this reference must be valid for the whole
> life time
> - /// of the diagnostic.
> - DiagnosticInfoUnsupported(const Function &Fn, const Twine &Msg,
> - SDLoc DLoc = SDLoc(), SDValue Value =
> SDValue())
> - : DiagnosticInfoWithDebugLocBase(DK_Unsupported, DS_Error, Fn,
> - DLoc.getDebugLoc()),
> - Msg(Msg), Value(Value) {}
> -
> - static bool classof(const DiagnosticInfo *DI) {
> - return DI->getKind() == DK_Unsupported;
> - }
> -
> - const Twine &getMessage() const { return Msg; }
> -
> - void print(DiagnosticPrinter &DP) const;
> -};
> -
> /// Emit a warning when loop vectorization is specified but fails. \p Fn
> is the
> /// function triggering the warning, \p DLoc is the debug location where
> the
> /// diagnostic is generated. \p Msg is the message string to use.
>
> Modified: llvm/trunk/lib/CodeGen/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/CMakeLists.txt?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/CMakeLists.txt (original)
> +++ llvm/trunk/lib/CodeGen/CMakeLists.txt Wed Jan 27 22:41:32 2016
> @@ -18,7 +18,6 @@ add_llvm_library(LLVMCodeGen
> CriticalAntiDepBreaker.cpp
> DeadMachineInstructionElim.cpp
> DFAPacketizer.cpp
> - DiagnosticInfoCodeGen.cpp
> DwarfEHPrepare.cpp
> EarlyIfConversion.cpp
> EdgeBundles.cpp
>
> Removed: llvm/trunk/lib/CodeGen/DiagnosticInfoCodeGen.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/DiagnosticInfoCodeGen.cpp?rev=259015&view=auto
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/DiagnosticInfoCodeGen.cpp (original)
> +++ llvm/trunk/lib/CodeGen/DiagnosticInfoCodeGen.cpp (removed)
> @@ -1,33 +0,0 @@
> -//===- llvm/Support/DiagnosticInfo.cpp - Diagnostic Definitions -*- C++
> -*-===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
>
> -//===----------------------------------------------------------------------===//
> -//
> -// This file defines the different classes involved in codegen
> diagnostics.
> -//
> -// Diagnostics reporting is still done as part of the LLVMContext.
>
> -//===----------------------------------------------------------------------===//
> -
> -#include "llvm/IR/DiagnosticInfo.h"
> -#include "llvm/IR/DiagnosticPrinter.h"
> -
> -namespace llvm {
> -
> -void DiagnosticInfoUnsupported::print(DiagnosticPrinter &DP) const {
> - std::string Str;
> - raw_string_ostream OS(Str);
> -
> - OS << getLocationStr() << ": in function " << getFunction().getName()
> << ' '
> - << *getFunction().getFunctionType() << ": " << Msg;
> - if (Value)
> - Value->print(OS);
> - OS << '\n';
> - OS.flush();
> - DP << Str;
> -}
> -
> -}
>
> Modified: llvm/trunk/lib/IR/DiagnosticInfo.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DiagnosticInfo.cpp?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/IR/DiagnosticInfo.cpp (original)
> +++ llvm/trunk/lib/IR/DiagnosticInfo.cpp Wed Jan 27 22:41:32 2016
> @@ -138,11 +138,11 @@ void DiagnosticInfoPGOProfile::print(Dia
> DP << getMsg();
> }
>
> -bool DiagnosticInfoWithDebugLocBase::isLocationAvailable() const {
> +bool DiagnosticInfoOptimizationBase::isLocationAvailable() const {
> return getDebugLoc();
> }
>
> -void DiagnosticInfoWithDebugLocBase::getLocation(StringRef *Filename,
> +void DiagnosticInfoOptimizationBase::getLocation(StringRef *Filename,
> unsigned *Line,
> unsigned *Column) const {
> DILocation *L = getDebugLoc();
> @@ -152,7 +152,7 @@ void DiagnosticInfoWithDebugLocBase::get
> *Column = L->getColumn();
> }
>
> -const std::string DiagnosticInfoWithDebugLocBase::getLocationStr() const {
> +const std::string DiagnosticInfoOptimizationBase::getLocationStr() const {
> StringRef Filename("<unknown>");
> unsigned Line = 0;
> unsigned Column = 0;
>
> Added: llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.cpp?rev=259016&view=auto
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.cpp
> (added)
> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.cpp Wed
> Jan 27 22:41:32 2016
> @@ -0,0 +1,26 @@
> +//===-- AMDGPUDiagnosticInfoUnsupported.cpp
> -------------------------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
>
> +//===----------------------------------------------------------------------===//
> +
> +#include "AMDGPUDiagnosticInfoUnsupported.h"
> +
> +using namespace llvm;
> +
> +DiagnosticInfoUnsupported::DiagnosticInfoUnsupported(
> + const Function &Fn,
> + const Twine &Desc,
> + DiagnosticSeverity Severity)
> + : DiagnosticInfo(getKindID(), Severity),
> + Description(Desc),
> + Fn(Fn) { }
> +
> +int DiagnosticInfoUnsupported::KindID = 0;
> +
> +void DiagnosticInfoUnsupported::print(DiagnosticPrinter &DP) const {
> + DP << "unsupported " << getDescription() << " in " << Fn.getName();
> +}
>
> Added: llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.h?rev=259016&view=auto
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.h (added)
> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.h Wed Jan
> 27 22:41:32 2016
> @@ -0,0 +1,48 @@
> +//===-- AMDGPUDiagnosticInfoUnsupported.h - Error reporting -----*- C++
> -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
>
> +//===----------------------------------------------------------------------===//
> +
> +#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUDIAGNOSTICINFOUNSUPPORTED_H
> +#define LLVM_LIB_TARGET_AMDGPU_AMDGPUDIAGNOSTICINFOUNSUPPORTED_H
> +
> +#include "llvm/IR/DiagnosticInfo.h"
> +#include "llvm/IR/DiagnosticPrinter.h"
> +
> +namespace llvm {
> +
> +/// Diagnostic information for unimplemented or unsupported feature
> reporting.
> +class DiagnosticInfoUnsupported : public DiagnosticInfo {
> +private:
> + const Twine &Description;
> + const Function &Fn;
> +
> + static int KindID;
> +
> + static int getKindID() {
> + if (KindID == 0)
> + KindID = llvm::getNextAvailablePluginDiagnosticKind();
> + return KindID;
> + }
> +
> +public:
> + DiagnosticInfoUnsupported(const Function &Fn, const Twine &Desc,
> + DiagnosticSeverity Severity = DS_Error);
> +
> + const Function &getFunction() const { return Fn; }
> + const Twine &getDescription() const { return Description; }
> +
> + void print(DiagnosticPrinter &DP) const override;
> +
> + static bool classof(const DiagnosticInfo *DI) {
> + return DI->getKind() == getKindID();
> + }
> +};
> +
> +}
> +
> +#endif
>
> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp (original)
> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp Wed Jan 27
> 22:41:32 2016
> @@ -12,6 +12,7 @@
> //
>
> //===----------------------------------------------------------------------===//
>
> +#include "AMDGPUDiagnosticInfoUnsupported.h"
> #include "AMDGPUInstrInfo.h"
> #include "AMDGPUISelLowering.h" // For AMDGPUISD
> #include "AMDGPURegisterInfo.h"
> @@ -26,7 +27,6 @@
> #include "llvm/CodeGen/PseudoSourceValue.h"
> #include "llvm/CodeGen/SelectionDAG.h"
> #include "llvm/CodeGen/SelectionDAGISel.h"
> -#include "llvm/IR/DiagnosticInfo.h"
> #include "llvm/IR/Function.h"
>
> using namespace llvm;
> @@ -1220,7 +1220,7 @@ SDNode *AMDGPUDAGToDAGISel::SelectAddrSp
>
> const MachineFunction &MF = CurDAG->getMachineFunction();
> DiagnosticInfoUnsupported NotImplemented(*MF.getFunction(),
> - "addrspacecast not
> implemented", DL);
> + "addrspacecast not
> implemented");
> CurDAG->getContext()->diagnose(NotImplemented);
>
> assert(Subtarget->hasFlatAddressSpace() &&
>
> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp Wed Jan 27
> 22:41:32 2016
> @@ -15,7 +15,7 @@
>
> #include "AMDGPUISelLowering.h"
> #include "AMDGPU.h"
> -//#include "AMDGPUDiagnosticInfoUnsupported.h"
> +#include "AMDGPUDiagnosticInfoUnsupported.h"
> #include "AMDGPUFrameLowering.h"
> #include "AMDGPUIntrinsicInfo.h"
> #include "AMDGPURegisterInfo.h"
> @@ -28,7 +28,6 @@
> #include "llvm/CodeGen/SelectionDAG.h"
> #include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
> #include "llvm/IR/DataLayout.h"
> -#include "llvm/IR/DiagnosticInfo.h"
> #include "SIInstrInfo.h"
> using namespace llvm;
>
> @@ -610,7 +609,7 @@ SDValue AMDGPUTargetLowering::LowerCall(
> else if (const GlobalAddressSDNode *G =
> dyn_cast<GlobalAddressSDNode>(Callee))
> FuncName = G->getGlobal()->getName();
>
> - DiagnosticInfoUnsupported NoCalls(Fn, "unsupported call to function " +
> FuncName, CLI.DL);
> + DiagnosticInfoUnsupported NoCalls(Fn, "call to function " + FuncName);
> DAG.getContext()->diagnose(NoCalls);
> return SDValue();
> }
> @@ -619,7 +618,7 @@ SDValue AMDGPUTargetLowering::LowerDYNAM
> SelectionDAG &DAG)
> const {
> const Function &Fn = *DAG.getMachineFunction().getFunction();
>
> - DiagnosticInfoUnsupported NoDynamicAlloca(Fn, "unsupported dynamic
> alloca", SDLoc(Op));
> + DiagnosticInfoUnsupported NoDynamicAlloca(Fn, "dynamic alloca");
> DAG.getContext()->diagnose(NoDynamicAlloca);
> return SDValue();
> }
> @@ -866,8 +865,8 @@ SDValue AMDGPUTargetLowering::LowerGloba
> }
>
> const Function &Fn = *DAG.getMachineFunction().getFunction();
> - DiagnosticInfoUnsupported BadInit(
> - Fn, "unsupported initializer for address space", SDLoc(Op));
> + DiagnosticInfoUnsupported BadInit(Fn,
> + "initializer for address space");
> DAG.getContext()->diagnose(BadInit);
> return SDValue();
> }
>
> Modified: llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt (original)
> +++ llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt Wed Jan 27 22:41:32 2016
> @@ -18,6 +18,7 @@ add_llvm_target(AMDGPUCodeGen
> AMDGPUAnnotateKernelFeatures.cpp
> AMDGPUAnnotateUniformValues.cpp
> AMDGPUAsmPrinter.cpp
> + AMDGPUDiagnosticInfoUnsupported.cpp
> AMDGPUFrameLowering.cpp
> AMDGPUTargetObjectFile.cpp
> AMDGPUIntrinsicInfo.cpp
>
> Modified: llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp Wed Jan 27 22:41:32
> 2016
> @@ -20,6 +20,7 @@
>
> #include "SIISelLowering.h"
> #include "AMDGPU.h"
> +#include "AMDGPUDiagnosticInfoUnsupported.h"
> #include "AMDGPUIntrinsicInfo.h"
> #include "AMDGPUSubtarget.h"
> #include "SIInstrInfo.h"
> @@ -31,7 +32,6 @@
> #include "llvm/CodeGen/MachineInstrBuilder.h"
> #include "llvm/CodeGen/MachineRegisterInfo.h"
> #include "llvm/CodeGen/SelectionDAG.h"
> -#include "llvm/IR/DiagnosticInfo.h"
> #include "llvm/IR/Function.h"
> #include "llvm/ADT/SmallString.h"
>
> @@ -591,8 +591,7 @@ SDValue SITargetLowering::LowerFormalArg
>
> if (Subtarget->isAmdHsaOS() && Info->getShaderType() !=
> ShaderType::COMPUTE) {
> const Function *Fn = MF.getFunction();
> - DiagnosticInfoUnsupported NoGraphicsHSA(
> - *Fn, "unsupported non-compute shaders with HSA", DL);
> + DiagnosticInfoUnsupported NoGraphicsHSA(*Fn, "non-compute shaders
> with HSA");
> DAG.getContext()->diagnose(NoGraphicsHSA);
> return SDValue();
> }
> @@ -1321,9 +1320,8 @@ SDValue SITargetLowering::LowerINTRINSIC
> switch (IntrinsicID) {
> case Intrinsic::amdgcn_dispatch_ptr:
> if (!Subtarget->isAmdHsaOS()) {
> - DiagnosticInfoUnsupported BadIntrin(
> - *MF.getFunction(), "unsupported hsa intrinsic without hsa
> target",
> - DL);
> + DiagnosticInfoUnsupported BadIntrin(*MF.getFunction(),
> + "hsa intrinsic without hsa
> target");
> DAG.getContext()->diagnose(BadIntrin);
> return DAG.getUNDEF(VT);
> }
>
> Modified: llvm/trunk/lib/Target/BPF/BPFISelLowering.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/BPF/BPFISelLowering.cpp?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/BPF/BPFISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/BPF/BPFISelLowering.cpp Wed Jan 27 22:41:32 2016
> @@ -34,6 +34,60 @@ using namespace llvm;
>
> #define DEBUG_TYPE "bpf-lower"
>
> +namespace {
> +
> +// Diagnostic information for unimplemented or unsupported feature
> reporting.
> +class DiagnosticInfoUnsupported : public DiagnosticInfo {
> +private:
> + // Debug location where this diagnostic is triggered.
> + DebugLoc DLoc;
> + const Twine &Description;
> + const Function &Fn;
> + SDValue Value;
> +
> + static int KindID;
> +
> + static int getKindID() {
> + if (KindID == 0)
> + KindID = llvm::getNextAvailablePluginDiagnosticKind();
> + return KindID;
> + }
> +
> +public:
> + DiagnosticInfoUnsupported(SDLoc DLoc, const Function &Fn, const Twine
> &Desc,
> + SDValue Value)
> + : DiagnosticInfo(getKindID(), DS_Error), DLoc(DLoc.getDebugLoc()),
> + Description(Desc), Fn(Fn), Value(Value) {}
> +
> + void print(DiagnosticPrinter &DP) const override {
> + std::string Str;
> + raw_string_ostream OS(Str);
> +
> + if (DLoc) {
> + auto DIL = DLoc.get();
> + StringRef Filename = DIL->getFilename();
> + unsigned Line = DIL->getLine();
> + unsigned Column = DIL->getColumn();
> + OS << Filename << ':' << Line << ':' << Column << ' ';
> + }
> +
> + OS << "in function " << Fn.getName() << ' ' << *Fn.getFunctionType()
> << '\n'
> + << Description;
> + if (Value)
> + Value->print(OS);
> + OS << '\n';
> + OS.flush();
> + DP << Str;
> + }
> +
> + static bool classof(const DiagnosticInfo *DI) {
> + return DI->getKind() == getKindID();
> + }
> +};
> +
> +int DiagnosticInfoUnsupported::KindID = 0;
> +}
> +
> BPFTargetLowering::BPFTargetLowering(const TargetMachine &TM,
> const BPFSubtarget &STI)
> : TargetLowering(TM) {
> @@ -182,16 +236,16 @@ SDValue BPFTargetLowering::LowerFormalAr
> InVals.push_back(ArgValue);
> }
> } else {
> - DiagnosticInfoUnsupported Err(
> - *MF.getFunction(), "defined with too many args", DL);
> + DiagnosticInfoUnsupported Err(DL, *MF.getFunction(),
> + "defined with too many args",
> SDValue());
> DAG.getContext()->diagnose(Err);
> }
> }
>
> if (IsVarArg || MF.getFunction()->hasStructRetAttr()) {
> DiagnosticInfoUnsupported Err(
> - *MF.getFunction(),
> - "functions with VarArgs or StructRet are not supported", DL);
> + DL, *MF.getFunction(),
> + "functions with VarArgs or StructRet are not supported",
> SDValue());
> DAG.getContext()->diagnose(Err);
> }
>
> @@ -231,8 +285,8 @@ SDValue BPFTargetLowering::LowerCall(Tar
> unsigned NumBytes = CCInfo.getNextStackOffset();
>
> if (Outs.size() >= 6) {
> - DiagnosticInfoUnsupported Err(*MF.getFunction(), "too many args to ",
> - CLI.DL, Callee);
> + DiagnosticInfoUnsupported Err(CLI.DL, *MF.getFunction(),
> + "too many args to ", Callee);
> DAG.getContext()->diagnose(Err);
> }
>
> @@ -241,8 +295,8 @@ SDValue BPFTargetLowering::LowerCall(Tar
> if (!Flags.isByVal())
> continue;
>
> - DiagnosticInfoUnsupported Err(
> - *MF.getFunction(), "pass by value not supported ", CLI.DL,
> Callee);
> + DiagnosticInfoUnsupported Err(CLI.DL, *MF.getFunction(),
> + "pass by value not supported ", Callee);
> DAG.getContext()->diagnose(Err);
> }
>
> @@ -344,8 +398,8 @@ BPFTargetLowering::LowerReturn(SDValue C
> CCState CCInfo(CallConv, IsVarArg, MF, RVLocs, *DAG.getContext());
>
> if (MF.getFunction()->getReturnType()->isAggregateType()) {
> - DiagnosticInfoUnsupported Err(
> - *MF.getFunction(), "only integer returns supported", DL);
> + DiagnosticInfoUnsupported Err(DL, *MF.getFunction(),
> + "only integer returns supported",
> SDValue());
> DAG.getContext()->diagnose(Err);
> }
>
> @@ -389,8 +443,8 @@ SDValue BPFTargetLowering::LowerCallResu
> CCState CCInfo(CallConv, IsVarArg, MF, RVLocs, *DAG.getContext());
>
> if (Ins.size() >= 2) {
> - DiagnosticInfoUnsupported Err(*MF.getFunction(),
> - "only small returns supported", DL);
> + DiagnosticInfoUnsupported Err(DL, *MF.getFunction(),
> + "only small returns supported",
> SDValue());
> DAG.getContext()->diagnose(Err);
> }
>
>
> Modified: llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
> (original)
> +++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp Wed Jan
> 27 22:41:32 2016
> @@ -35,6 +35,61 @@ using namespace llvm;
>
> #define DEBUG_TYPE "wasm-lower"
>
> +namespace {
> +// Diagnostic information for unimplemented or unsupported feature
> reporting.
> +// TODO: This code is copied from BPF and AMDGPU; consider factoring it
> out
> +// and sharing code.
> +class DiagnosticInfoUnsupported final : public DiagnosticInfo {
> +private:
> + // Debug location where this diagnostic is triggered.
> + DebugLoc DLoc;
> + const Twine &Description;
> + const Function &Fn;
> + SDValue Value;
> +
> + static int KindID;
> +
> + static int getKindID() {
> + if (KindID == 0)
> + KindID = llvm::getNextAvailablePluginDiagnosticKind();
> + return KindID;
> + }
> +
> +public:
> + DiagnosticInfoUnsupported(SDLoc DLoc, const Function &Fn, const Twine
> &Desc,
> + SDValue Value)
> + : DiagnosticInfo(getKindID(), DS_Error), DLoc(DLoc.getDebugLoc()),
> + Description(Desc), Fn(Fn), Value(Value) {}
> +
> + void print(DiagnosticPrinter &DP) const override {
> + std::string Str;
> + raw_string_ostream OS(Str);
> +
> + if (DLoc) {
> + auto DIL = DLoc.get();
> + StringRef Filename = DIL->getFilename();
> + unsigned Line = DIL->getLine();
> + unsigned Column = DIL->getColumn();
> + OS << Filename << ':' << Line << ':' << Column << ' ';
> + }
> +
> + OS << "in function " << Fn.getName() << ' ' << *Fn.getFunctionType()
> << '\n'
> + << Description;
> + if (Value)
> + Value->print(OS);
> + OS << '\n';
> + OS.flush();
> + DP << Str;
> + }
> +
> + static bool classof(const DiagnosticInfo *DI) {
> + return DI->getKind() == getKindID();
> + }
> +};
> +
> +int DiagnosticInfoUnsupported::KindID = 0;
> +} // end anonymous namespace
> +
> WebAssemblyTargetLowering::WebAssemblyTargetLowering(
> const TargetMachine &TM, const WebAssemblySubtarget &STI)
> : TargetLowering(TM), Subtarget(&STI) {
>
> Modified: llvm/trunk/test/CodeGen/AMDGPU/addrspacecast.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/addrspacecast.ll?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/addrspacecast.ll (original)
> +++ llvm/trunk/test/CodeGen/AMDGPU/addrspacecast.ll Wed Jan 27 22:41:32
> 2016
> @@ -1,6 +1,6 @@
> ; RUN: not llc -O0 -march=amdgcn -mcpu=bonaire -mattr=-promote-alloca <
> %s 2>&1 | FileCheck -check-prefix=ERROR %s
>
> -; ERROR: addrspacecast not implemented
> +; ERROR: unsupported addrspacecast not implemented
>
> ; XUN: llc -O0 -march=amdgcn -mcpu=bonaire -mattr=-promote-alloca < %s |
> FileCheck -check-prefix=CHECK -check-prefix=CHECK-NO-PROMOTE %s
> ; XUN: llc -O0 -march=amdgcn -mcpu=bonaire -mattr=+promote-alloca < %s |
> FileCheck -check-prefix=CHECK -check-prefix=CHECK-PROMOTE %s
>
> Modified: llvm/trunk/test/CodeGen/AMDGPU/call.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/call.ll?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/call.ll (original)
> +++ llvm/trunk/test/CodeGen/AMDGPU/call.ll Wed Jan 27 22:41:32 2016
> @@ -2,7 +2,7 @@
> ; RUN: not llc -march=amdgcn -mcpu=tonga -verify-machineinstrs< %s 2>&1 |
> FileCheck %s
> ; RUN: not llc -march=r600 -mcpu=cypress < %s 2>&1 | FileCheck %s
>
> -; CHECK: in function test_call_external{{.*}}: unsupported call to
> function external_function
> +; CHECK: error: unsupported call to function external_function in
> test_call_external
>
>
> declare i32 @external_function(i32) nounwind
>
> Modified: llvm/trunk/test/CodeGen/AMDGPU/dynamic_stackalloc.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/dynamic_stackalloc.ll?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/dynamic_stackalloc.ll (original)
> +++ llvm/trunk/test/CodeGen/AMDGPU/dynamic_stackalloc.ll Wed Jan 27
> 22:41:32 2016
> @@ -2,7 +2,7 @@
> ; RUN: not llc -march=amdgcn -mcpu=tahiti -mattr=-promote-alloca
> -verify-machineinstrs < %s 2>&1 | FileCheck %s
> ; RUN: not llc -march=r600 -mcpu=cypress < %s 2>&1 | FileCheck %s
>
> -; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic
> alloca
> +; CHECK: error: unsupported dynamic alloca in test_dynamic_stackalloc
>
> define void @test_dynamic_stackalloc(i32 addrspace(1)* %out, i32 %n) {
> %alloca = alloca i32, i32 %n
>
> Modified: llvm/trunk/test/CodeGen/AMDGPU/global-zero-initializer.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/global-zero-initializer.ll?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/global-zero-initializer.ll (original)
> +++ llvm/trunk/test/CodeGen/AMDGPU/global-zero-initializer.ll Wed Jan 27
> 22:41:32 2016
> @@ -1,7 +1,7 @@
> ; RUN: not llc -march=amdgcn -mcpu=SI < %s 2>&1 | FileCheck %s
> ; RUN: not llc -march=amdgcn -mcpu=tonga < %s 2>&1 | FileCheck %s
>
> -; CHECK: in function load_init_global_global{{.*}}: unsupported
> initializer for address space
> +; CHECK: error: unsupported initializer for address space in
> load_init_global_global
>
> @lds = addrspace(1) global [256 x i32] zeroinitializer
>
>
> Modified: llvm/trunk/test/CodeGen/AMDGPU/lds-initializer.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/lds-initializer.ll?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/lds-initializer.ll (original)
> +++ llvm/trunk/test/CodeGen/AMDGPU/lds-initializer.ll Wed Jan 27 22:41:32
> 2016
> @@ -1,7 +1,7 @@
> ; RUN: not llc -march=amdgcn -mcpu=SI < %s 2>&1 | FileCheck %s
> ; RUN: not llc -march=amdgcn -mcpu=tonga < %s 2>&1 | FileCheck %s
>
> -; CHECK: in function load_init_lds_global{{.*}}: unsupported initializer
> for address space
> +; CHECK: error: unsupported initializer for address space in
> load_init_lds_global
>
> @lds = addrspace(3) global [8 x i32] [i32 1, i32 2, i32 3, i32 4, i32 5,
> i32 6, i32 7, i32 8]
>
>
> Modified: llvm/trunk/test/CodeGen/AMDGPU/lds-zero-initializer.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/lds-zero-initializer.ll?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/lds-zero-initializer.ll (original)
> +++ llvm/trunk/test/CodeGen/AMDGPU/lds-zero-initializer.ll Wed Jan 27
> 22:41:32 2016
> @@ -1,7 +1,7 @@
> ; RUN: not llc -march=amdgcn -mcpu=SI < %s 2>&1 | FileCheck %s
> ; RUN: not llc -march=amdgcn -mcpu=tonga < %s 2>&1 | FileCheck %s
>
> -; CHECK: in function load_zeroinit_lds_global{{.*}}: unsupported
> initializer for address space
> +; CHECK: error: unsupported initializer for address space in
> load_zeroinit_lds_global
>
> @lds = addrspace(3) global [256 x i32] zeroinitializer
>
>
> Modified: llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.dispatch.ptr.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.dispatch.ptr.ll?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.dispatch.ptr.ll (original)
> +++ llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.dispatch.ptr.ll Wed Jan 27
> 22:41:32 2016
> @@ -1,7 +1,7 @@
> ; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs <
> %s | FileCheck -check-prefix=GCN %s
> ; RUN: not llc -mtriple=amdgcn-unknown-unknown -mcpu=kaveri
> -verify-machineinstrs < %s 2>&1 | FileCheck -check-prefix=ERROR %s
>
> -; ERROR: in function test{{.*}}: unsupported hsa intrinsic without hsa
> target
> +; ERROR: error: unsupported hsa intrinsic without hsa target in test
>
> ; GCN-LABEL: {{^}}test:
> ; GCN: enable_sgpr_dispatch_ptr = 1
>
> Modified: llvm/trunk/test/CodeGen/AMDGPU/no-hsa-graphics-shaders.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/no-hsa-graphics-shaders.ll?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/no-hsa-graphics-shaders.ll (original)
> +++ llvm/trunk/test/CodeGen/AMDGPU/no-hsa-graphics-shaders.ll Wed Jan 27
> 22:41:32 2016
> @@ -1,6 +1,6 @@
> ; RUN: not llc -march=amdgcn -mtriple=amdgcn-unknown-amdhsa < %s 2>&1 |
> FileCheck %s
>
> -; CHECK: in function pixel_s{{.*}}: unsupported non-compute shaders with
> HSA
> +; CHECK: error: unsupported non-compute shaders with HSA in pixel_shader
> define void @pixel_shader() #0 {
> ret void
> }
>
> Modified: llvm/trunk/test/CodeGen/AMDGPU/promote-alloca-bitcast-function.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/promote-alloca-bitcast-function.ll?rev=259016&r1=259015&r2=259016&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/promote-alloca-bitcast-function.ll
> (original)
> +++ llvm/trunk/test/CodeGen/AMDGPU/promote-alloca-bitcast-function.ll Wed
> Jan 27 22:41:32 2016
> @@ -6,7 +6,7 @@
> declare void @foo(float*) #0
> declare void @foo.varargs(...) #0
>
> -; CHECK: in function crash_call_constexpr_cast{{.*}}: unsupported call to
> function foo
> +; CHECK: error: unsupported call to function foo in
> crash_call_constexpr_cast
> define void @crash_call_constexpr_cast() #0 {
> %alloca = alloca i32
> call void bitcast (void (float*)* @foo to void (i32*)*)(i32* %alloca) #0
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160127/d87919e1/attachment.html>
More information about the llvm-commits
mailing list