[llvm] r258951 - Refactor backend diagnostics for unsupported features

NAKAMURA Takumi via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 27 21:11:08 PST 2016


Reverted in r259016.

On Thu, Jan 28, 2016 at 4:35 AM Benjamin Kramer via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> On Wed, Jan 27, 2016 at 6:30 PM, Oliver Stannard via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> > Author: olista01
> > Date: Wed Jan 27 11:30:33 2016
> > New Revision: 258951
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=258951&view=rev
> > Log:
> > Refactor backend diagnostics for unsupported features
> >
> > The BPF and WebAssembly backends had identical code for emitting errors
> > for unsupported features, and AMDGPU had very similar code. This merges
> > them all into one DiagnosticInfo subclass, that can be used by any
> > backend.
> >
> > There should be minimal functional changes here, but some AMDGPU tests
> > have been updated for the new format of errors (it used a slightly
> > different format to BPF and WebAssembly). The AMDGPU error messages will
> > now benefit from having precise source locations when debug info is
> > available.
> >
> > The implementation of DiagnosticInfoUnsupported::print must be in
> > lib/Codegen rather than in the existing file in lib/IR/ to avoid
> > introducing a dependency from IR to CodeGen.
> >
> > Differential Revision: http://reviews.llvm.org/D16590
> >
> >
> > Added:
> >     llvm/trunk/lib/CodeGen/DiagnosticInfoCodeGen.cpp
> > Removed:
> >     llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.cpp
> >     llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.h
> > 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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/include/llvm/IR/DiagnosticInfo.h (original)
> > +++ llvm/trunk/include/llvm/IR/DiagnosticInfo.h Wed Jan 27 11:30:33 2016
> > @@ -16,6 +16,7 @@
> >  #define LLVM_IR_DIAGNOSTICINFO_H
> >
> >  #include "llvm/ADT/ArrayRef.h"
> > +#include "llvm/CodeGen/SelectionDAG.h"
>
> This really really really doesn't belong into llvm/IR. Please put the
> code that needs it somewhere into llvm/CodeGen.
>
> >  #include "llvm/IR/DebugLoc.h"
> >  #include "llvm/IR/Module.h"
> >  #include "llvm/Support/Casting.h"
> > @@ -60,6 +61,7 @@ enum DiagnosticKind {
> >    DK_OptimizationFailure,
> >    DK_MIRParser,
> >    DK_PGOProfile,
> > +  DK_Unsupported,
> >    DK_FirstPluginKind
> >  };
> >
> > @@ -275,8 +277,42 @@ 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 DiagnosticInfo {
> > +class DiagnosticInfoOptimizationBase : public
> DiagnosticInfoWithDebugLocBase {
> >  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
> > @@ -289,8 +325,8 @@ public:
> >                                   enum DiagnosticSeverity Severity,
> >                                   const char *PassName, const Function
> &Fn,
> >                                   const DebugLoc &DLoc, const Twine &Msg)
> > -      : DiagnosticInfo(Kind, Severity), PassName(PassName), Fn(Fn),
> DLoc(DLoc),
> > -        Msg(Msg) {}
> > +      : DiagnosticInfoWithDebugLocBase(Kind, Severity, Fn, DLoc),
> > +        PassName(PassName), Msg(Msg) {}
> >
> >    /// \see DiagnosticInfo::print.
> >    void print(DiagnosticPrinter &DP) const override;
> > @@ -302,21 +338,7 @@ 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:
> > @@ -325,12 +347,6 @@ 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;
> >  };
> > @@ -572,6 +588,35 @@ 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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/CodeGen/CMakeLists.txt (original)
> > +++ llvm/trunk/lib/CodeGen/CMakeLists.txt Wed Jan 27 11:30:33 2016
> > @@ -18,6 +18,7 @@ add_llvm_library(LLVMCodeGen
> >    CriticalAntiDepBreaker.cpp
> >    DeadMachineInstructionElim.cpp
> >    DFAPacketizer.cpp
> > +  DiagnosticInfoCodeGen.cpp
> >    DwarfEHPrepare.cpp
> >    EarlyIfConversion.cpp
> >    EdgeBundles.cpp
> >
> > Added: llvm/trunk/lib/CodeGen/DiagnosticInfoCodeGen.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/DiagnosticInfoCodeGen.cpp?rev=258951&view=auto
> >
> ==============================================================================
> > --- llvm/trunk/lib/CodeGen/DiagnosticInfoCodeGen.cpp (added)
> > +++ llvm/trunk/lib/CodeGen/DiagnosticInfoCodeGen.cpp Wed Jan 27 11:30:33
> 2016
> > @@ -0,0 +1,33 @@
> > +//===- 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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/IR/DiagnosticInfo.cpp (original)
> > +++ llvm/trunk/lib/IR/DiagnosticInfo.cpp Wed Jan 27 11:30:33 2016
> > @@ -138,11 +138,11 @@ void DiagnosticInfoPGOProfile::print(Dia
> >    DP << getMsg();
> >  }
> >
> > -bool DiagnosticInfoOptimizationBase::isLocationAvailable() const {
> > +bool DiagnosticInfoWithDebugLocBase::isLocationAvailable() const {
> >    return getDebugLoc();
> >  }
> >
> > -void DiagnosticInfoOptimizationBase::getLocation(StringRef *Filename,
> > +void DiagnosticInfoWithDebugLocBase::getLocation(StringRef *Filename,
> >                                                   unsigned *Line,
> >                                                   unsigned *Column)
> const {
> >    DILocation *L = getDebugLoc();
> > @@ -152,7 +152,7 @@ void DiagnosticInfoOptimizationBase::get
> >    *Column = L->getColumn();
> >  }
> >
> > -const std::string DiagnosticInfoOptimizationBase::getLocationStr()
> const {
> > +const std::string DiagnosticInfoWithDebugLocBase::getLocationStr()
> const {
> >    StringRef Filename("<unknown>");
> >    unsigned Line = 0;
> >    unsigned Column = 0;
> >
> > Removed: llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.cpp?rev=258950&view=auto
> >
> ==============================================================================
> > --- llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.cpp
> (original)
> > +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.cpp
> (removed)
> > @@ -1,26 +0,0 @@
> > -//===-- 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();
> > -}
> >
> > Removed: llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.h
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.h?rev=258950&view=auto
> >
> ==============================================================================
> > --- llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.h
> (original)
> > +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUDiagnosticInfoUnsupported.h
> (removed)
> > @@ -1,48 +0,0 @@
> > -//===-- 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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp (original)
> > +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp Wed Jan 27
> 11:30:33 2016
> > @@ -12,7 +12,6 @@
> >  //
> >
> //===----------------------------------------------------------------------===//
> >
> > -#include "AMDGPUDiagnosticInfoUnsupported.h"
> >  #include "AMDGPUInstrInfo.h"
> >  #include "AMDGPUISelLowering.h" // For AMDGPUISD
> >  #include "AMDGPURegisterInfo.h"
> > @@ -27,6 +26,7 @@
> >  #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");
> > +                                           "addrspacecast not
> implemented", DL);
> >    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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp (original)
> > +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp Wed Jan 27
> 11:30:33 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,6 +28,7 @@
> >  #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;
> >
> > @@ -609,7 +610,7 @@ SDValue AMDGPUTargetLowering::LowerCall(
> >    else if (const GlobalAddressSDNode *G =
> dyn_cast<GlobalAddressSDNode>(Callee))
> >      FuncName = G->getGlobal()->getName();
> >
> > -  DiagnosticInfoUnsupported NoCalls(Fn, "call to function " + FuncName);
> > +  DiagnosticInfoUnsupported NoCalls(Fn, "unsupported call to function "
> + FuncName, CLI.DL);
> >    DAG.getContext()->diagnose(NoCalls);
> >    return SDValue();
> >  }
> > @@ -618,7 +619,7 @@ SDValue AMDGPUTargetLowering::LowerDYNAM
> >                                                        SelectionDAG
> &DAG) const {
> >    const Function &Fn = *DAG.getMachineFunction().getFunction();
> >
> > -  DiagnosticInfoUnsupported NoDynamicAlloca(Fn, "dynamic alloca");
> > +  DiagnosticInfoUnsupported NoDynamicAlloca(Fn, "unsupported dynamic
> alloca", SDLoc(Op));
> >    DAG.getContext()->diagnose(NoDynamicAlloca);
> >    return SDValue();
> >  }
> > @@ -865,8 +866,8 @@ SDValue AMDGPUTargetLowering::LowerGloba
> >    }
> >
> >    const Function &Fn = *DAG.getMachineFunction().getFunction();
> > -  DiagnosticInfoUnsupported BadInit(Fn,
> > -                                    "initializer for address space");
> > +  DiagnosticInfoUnsupported BadInit(
> > +      Fn, "unsupported initializer for address space", SDLoc(Op));
> >    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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt (original)
> > +++ llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt Wed Jan 27 11:30:33 2016
> > @@ -18,7 +18,6 @@ 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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp (original)
> > +++ llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp Wed Jan 27 11:30:33
> 2016
> > @@ -20,7 +20,6 @@
> >
> >  #include "SIISelLowering.h"
> >  #include "AMDGPU.h"
> > -#include "AMDGPUDiagnosticInfoUnsupported.h"
> >  #include "AMDGPUIntrinsicInfo.h"
> >  #include "AMDGPUSubtarget.h"
> >  #include "SIInstrInfo.h"
> > @@ -32,6 +31,7 @@
> >  #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,7 +591,8 @@ SDValue SITargetLowering::LowerFormalArg
> >
> >    if (Subtarget->isAmdHsaOS() && Info->getShaderType() !=
> ShaderType::COMPUTE) {
> >      const Function *Fn = MF.getFunction();
> > -    DiagnosticInfoUnsupported NoGraphicsHSA(*Fn, "non-compute shaders
> with HSA");
> > +    DiagnosticInfoUnsupported NoGraphicsHSA(
> > +        *Fn, "unsupported non-compute shaders with HSA", DL);
> >      DAG.getContext()->diagnose(NoGraphicsHSA);
> >      return SDValue();
> >    }
> > @@ -1320,8 +1321,9 @@ SDValue SITargetLowering::LowerINTRINSIC
> >    switch (IntrinsicID) {
> >    case Intrinsic::amdgcn_dispatch_ptr:
> >      if (!Subtarget->isAmdHsaOS()) {
> > -      DiagnosticInfoUnsupported BadIntrin(*MF.getFunction(),
> > -                                          "hsa intrinsic without hsa
> target");
> > +      DiagnosticInfoUnsupported BadIntrin(
> > +          *MF.getFunction(), "unsupported hsa intrinsic without hsa
> target",
> > +          DL);
> >        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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Target/BPF/BPFISelLowering.cpp (original)
> > +++ llvm/trunk/lib/Target/BPF/BPFISelLowering.cpp Wed Jan 27 11:30:33
> 2016
> > @@ -34,60 +34,6 @@ 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) {
> > @@ -236,16 +182,16 @@ SDValue BPFTargetLowering::LowerFormalAr
> >          InVals.push_back(ArgValue);
> >        }
> >      } else {
> > -      DiagnosticInfoUnsupported Err(DL, *MF.getFunction(),
> > -                                    "defined with too many args",
> SDValue());
> > +      DiagnosticInfoUnsupported Err(
> > +          *MF.getFunction(), "defined with too many args", DL);
> >        DAG.getContext()->diagnose(Err);
> >      }
> >    }
> >
> >    if (IsVarArg || MF.getFunction()->hasStructRetAttr()) {
> >      DiagnosticInfoUnsupported Err(
> > -        DL, *MF.getFunction(),
> > -        "functions with VarArgs or StructRet are not supported",
> SDValue());
> > +        *MF.getFunction(),
> > +        "functions with VarArgs or StructRet are not supported", DL);
> >      DAG.getContext()->diagnose(Err);
> >    }
> >
> > @@ -285,8 +231,8 @@ SDValue BPFTargetLowering::LowerCall(Tar
> >    unsigned NumBytes = CCInfo.getNextStackOffset();
> >
> >    if (Outs.size() >= 6) {
> > -    DiagnosticInfoUnsupported Err(CLI.DL, *MF.getFunction(),
> > -                                  "too many args to ", Callee);
> > +    DiagnosticInfoUnsupported Err(*MF.getFunction(), "too many args to
> ",
> > +                                  CLI.DL, Callee);
> >      DAG.getContext()->diagnose(Err);
> >    }
> >
> > @@ -295,8 +241,8 @@ SDValue BPFTargetLowering::LowerCall(Tar
> >      if (!Flags.isByVal())
> >        continue;
> >
> > -    DiagnosticInfoUnsupported Err(CLI.DL, *MF.getFunction(),
> > -                                  "pass by value not supported ",
> Callee);
> > +    DiagnosticInfoUnsupported Err(
> > +        *MF.getFunction(), "pass by value not supported ", CLI.DL,
> Callee);
> >      DAG.getContext()->diagnose(Err);
> >    }
> >
> > @@ -398,8 +344,8 @@ BPFTargetLowering::LowerReturn(SDValue C
> >    CCState CCInfo(CallConv, IsVarArg, MF, RVLocs, *DAG.getContext());
> >
> >    if (MF.getFunction()->getReturnType()->isAggregateType()) {
> > -    DiagnosticInfoUnsupported Err(DL, *MF.getFunction(),
> > -                                  "only integer returns supported",
> SDValue());
> > +    DiagnosticInfoUnsupported Err(
> > +        *MF.getFunction(), "only integer returns supported", DL);
> >      DAG.getContext()->diagnose(Err);
> >    }
> >
> > @@ -443,8 +389,8 @@ SDValue BPFTargetLowering::LowerCallResu
> >    CCState CCInfo(CallConv, IsVarArg, MF, RVLocs, *DAG.getContext());
> >
> >    if (Ins.size() >= 2) {
> > -    DiagnosticInfoUnsupported Err(DL, *MF.getFunction(),
> > -                                  "only small returns supported",
> SDValue());
> > +    DiagnosticInfoUnsupported Err(*MF.getFunction(),
> > +                                  "only small returns supported", DL);
> >      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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
> (original)
> > +++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp Wed
> Jan 27 11:30:33 2016
> > @@ -35,61 +35,6 @@ 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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/CodeGen/AMDGPU/addrspacecast.ll (original)
> > +++ llvm/trunk/test/CodeGen/AMDGPU/addrspacecast.ll Wed Jan 27 11:30:33
> 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: unsupported addrspacecast not implemented
> > +; ERROR: 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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/CodeGen/AMDGPU/call.ll (original)
> > +++ llvm/trunk/test/CodeGen/AMDGPU/call.ll Wed Jan 27 11:30:33 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: error: unsupported call to function external_function in
> test_call_external
> > +; CHECK: in function test_call_external{{.*}}: unsupported call to
> function external_function
> >
> >
> >  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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/CodeGen/AMDGPU/dynamic_stackalloc.ll (original)
> > +++ llvm/trunk/test/CodeGen/AMDGPU/dynamic_stackalloc.ll Wed Jan 27
> 11:30:33 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: error: unsupported dynamic alloca in test_dynamic_stackalloc
> > +; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic
> alloca
> >
> >  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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/CodeGen/AMDGPU/global-zero-initializer.ll (original)
> > +++ llvm/trunk/test/CodeGen/AMDGPU/global-zero-initializer.ll Wed Jan 27
> 11:30:33 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: error: unsupported initializer for address space in
> load_init_global_global
> > +; CHECK: in function load_init_global_global{{.*}}: unsupported
> initializer for address space
> >
> >  @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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/CodeGen/AMDGPU/lds-initializer.ll (original)
> > +++ llvm/trunk/test/CodeGen/AMDGPU/lds-initializer.ll Wed Jan 27
> 11:30:33 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: error: unsupported initializer for address space in
> load_init_lds_global
> > +; CHECK: in function load_init_lds_global{{.*}}: unsupported
> initializer for address space
> >
> >  @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=258951&r1=258950&r2=258951&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/CodeGen/AMDGPU/lds-zero-initializer.ll (original)
> > +++ llvm/trunk/test/CodeGen/AMDGPU/lds-zero-initializer.ll Wed Jan 27
> 11:30:33 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: error: unsupported initializer for address space in
> load_zeroinit_lds_global
> > +; CHECK: in function load_zeroinit_lds_global{{.*}}: unsupported
> initializer for address space
> >
> >  @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=258951&r1=258950&r2=258951&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 11:30:33 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: error: unsupported hsa intrinsic without hsa target in test
> > +; ERROR: in function test{{.*}}: unsupported hsa intrinsic without hsa
> target
> >
> >  ; 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=258951&r1=258950&r2=258951&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
> 11:30:33 2016
> > @@ -1,6 +1,6 @@
> >  ; RUN: not llc -march=amdgcn -mtriple=amdgcn-unknown-amdhsa < %s 2>&1 |
> FileCheck %s
> >
> > -; CHECK: error: unsupported non-compute shaders with HSA in pixel_shader
> > +; CHECK: in function pixel_s{{.*}}: unsupported non-compute shaders
> with HSA
> >  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=258951&r1=258950&r2=258951&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 11:30:33 2016
> > @@ -6,7 +6,7 @@
> >  declare void @foo(float*) #0
> >  declare void @foo.varargs(...) #0
> >
> > -; CHECK: error: unsupported call to function foo in
> crash_call_constexpr_cast
> > +; CHECK: in function crash_call_constexpr_cast{{.*}}: unsupported call
> to function foo
> >  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
> _______________________________________________
> 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/20160128/c409b9fb/attachment.html>


More information about the llvm-commits mailing list