Revert "Rename LLVMContext diagnostic handler types and functions."
This reverts my commit 171047. Now that I've removed my misguided attempt to support backend warnings, these diagnostics are only about inline assembly. It would take quite a bit more work to generalize them properly, so I'm just reverting this. llvm-svn: 174860
This commit is contained in:
parent
cb268f7995
commit
a594fab454
|
@ -58,39 +58,27 @@ public:
|
||||||
void getMDKindNames(SmallVectorImpl<StringRef> &Result) const;
|
void getMDKindNames(SmallVectorImpl<StringRef> &Result) const;
|
||||||
|
|
||||||
|
|
||||||
typedef void (*DiagHandlerTy)(const SMDiagnostic&, void *Context,
|
typedef void (*InlineAsmDiagHandlerTy)(const SMDiagnostic&, void *Context,
|
||||||
unsigned LocCookie);
|
unsigned LocCookie);
|
||||||
|
|
||||||
/// setDiagnosticHandler - This method sets a handler that is invoked
|
/// setInlineAsmDiagnosticHandler - This method sets a handler that is invoked
|
||||||
/// when problems are detected by the backend. The first argument is a
|
/// when problems with inline asm are detected by the backend. The first
|
||||||
/// function pointer and the second is a context pointer that gets passed
|
/// argument is a function pointer and the second is a context pointer that
|
||||||
/// into the DiagHandler.
|
/// gets passed into the DiagHandler.
|
||||||
///
|
///
|
||||||
/// LLVMContext doesn't take ownership or interpret either of these
|
/// LLVMContext doesn't take ownership or interpret either of these
|
||||||
/// pointers.
|
/// pointers.
|
||||||
void setDiagnosticHandler(DiagHandlerTy DiagHandler, void *DiagContext = 0);
|
|
||||||
|
|
||||||
/// getDiagnosticHandler - Return the diagnostic handler set by
|
|
||||||
/// setDiagnosticHandler.
|
|
||||||
DiagHandlerTy getDiagnosticHandler() const;
|
|
||||||
|
|
||||||
/// getDiagnosticContext - Return the diagnostic context set by
|
|
||||||
/// setDiagnosticHandler.
|
|
||||||
void *getDiagnosticContext() const;
|
|
||||||
|
|
||||||
/// FIXME: Temporary copies of the old names; to be removed as soon as
|
|
||||||
/// clang switches to the new ones.
|
|
||||||
typedef DiagHandlerTy InlineAsmDiagHandlerTy;
|
|
||||||
void setInlineAsmDiagnosticHandler(InlineAsmDiagHandlerTy DiagHandler,
|
void setInlineAsmDiagnosticHandler(InlineAsmDiagHandlerTy DiagHandler,
|
||||||
void *DiagContext = 0) {
|
void *DiagContext = 0);
|
||||||
setDiagnosticHandler(DiagHandler, DiagContext);
|
|
||||||
}
|
/// getInlineAsmDiagnosticHandler - Return the diagnostic handler set by
|
||||||
InlineAsmDiagHandlerTy getInlineAsmDiagnosticHandler() const {
|
/// setInlineAsmDiagnosticHandler.
|
||||||
return getDiagnosticHandler();
|
InlineAsmDiagHandlerTy getInlineAsmDiagnosticHandler() const;
|
||||||
}
|
|
||||||
void *getInlineAsmDiagnosticContext() const {
|
/// getInlineAsmDiagnosticContext - Return the diagnostic context set by
|
||||||
return getDiagnosticContext();
|
/// setInlineAsmDiagnosticHandler.
|
||||||
}
|
void *getInlineAsmDiagnosticContext() const;
|
||||||
|
|
||||||
|
|
||||||
/// emitError - Emit an error message to the currently installed error handler
|
/// emitError - Emit an error message to the currently installed error handler
|
||||||
/// with optional location information. This function returns, so code should
|
/// with optional location information. This function returns, so code should
|
||||||
|
|
|
@ -38,7 +38,7 @@ using namespace llvm;
|
||||||
namespace {
|
namespace {
|
||||||
struct SrcMgrDiagInfo {
|
struct SrcMgrDiagInfo {
|
||||||
const MDNode *LocInfo;
|
const MDNode *LocInfo;
|
||||||
LLVMContext::DiagHandlerTy DiagHandler;
|
LLVMContext::InlineAsmDiagHandlerTy DiagHandler;
|
||||||
void *DiagContext;
|
void *DiagContext;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -88,15 +88,15 @@ void AsmPrinter::EmitInlineAsm(StringRef Str, const MDNode *LocMDNode,
|
||||||
SourceMgr SrcMgr;
|
SourceMgr SrcMgr;
|
||||||
SrcMgrDiagInfo DiagInfo;
|
SrcMgrDiagInfo DiagInfo;
|
||||||
|
|
||||||
// If the current LLVMContext has a diagnostic handler, set it in SourceMgr.
|
// If the current LLVMContext has an inline asm handler, set it in SourceMgr.
|
||||||
LLVMContext &LLVMCtx = MMI->getModule()->getContext();
|
LLVMContext &LLVMCtx = MMI->getModule()->getContext();
|
||||||
bool HasDiagHandler = false;
|
bool HasDiagHandler = false;
|
||||||
if (LLVMCtx.getDiagnosticHandler() != 0) {
|
if (LLVMCtx.getInlineAsmDiagnosticHandler() != 0) {
|
||||||
// If the source manager has an issue, we arrange for srcMgrDiagHandler
|
// If the source manager has an issue, we arrange for srcMgrDiagHandler
|
||||||
// to be invoked, getting DiagInfo passed into it.
|
// to be invoked, getting DiagInfo passed into it.
|
||||||
DiagInfo.LocInfo = LocMDNode;
|
DiagInfo.LocInfo = LocMDNode;
|
||||||
DiagInfo.DiagHandler = LLVMCtx.getDiagnosticHandler();
|
DiagInfo.DiagHandler = LLVMCtx.getInlineAsmDiagnosticHandler();
|
||||||
DiagInfo.DiagContext = LLVMCtx.getDiagnosticContext();
|
DiagInfo.DiagContext = LLVMCtx.getInlineAsmDiagnosticContext();
|
||||||
SrcMgr.setDiagHandler(srcMgrDiagHandler, &DiagInfo);
|
SrcMgr.setDiagHandler(srcMgrDiagHandler, &DiagInfo);
|
||||||
HasDiagHandler = true;
|
HasDiagHandler = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,22 +73,24 @@ void LLVMContext::removeModule(Module *M) {
|
||||||
// Recoverable Backend Errors
|
// Recoverable Backend Errors
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
void LLVMContext::setDiagnosticHandler(DiagHandlerTy DiagHandler,
|
void LLVMContext::
|
||||||
|
setInlineAsmDiagnosticHandler(InlineAsmDiagHandlerTy DiagHandler,
|
||||||
void *DiagContext) {
|
void *DiagContext) {
|
||||||
pImpl->DiagHandler = DiagHandler;
|
pImpl->InlineAsmDiagHandler = DiagHandler;
|
||||||
pImpl->DiagContext = DiagContext;
|
pImpl->InlineAsmDiagContext = DiagContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getDiagnosticHandler - Return the diagnostic handler set by
|
/// getInlineAsmDiagnosticHandler - Return the diagnostic handler set by
|
||||||
/// setDiagnosticHandler.
|
/// setInlineAsmDiagnosticHandler.
|
||||||
LLVMContext::DiagHandlerTy LLVMContext::getDiagnosticHandler() const {
|
LLVMContext::InlineAsmDiagHandlerTy
|
||||||
return pImpl->DiagHandler;
|
LLVMContext::getInlineAsmDiagnosticHandler() const {
|
||||||
|
return pImpl->InlineAsmDiagHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getDiagnosticContext - Return the diagnostic context set by
|
/// getInlineAsmDiagnosticContext - Return the diagnostic context set by
|
||||||
/// setDiagnosticHandler.
|
/// setInlineAsmDiagnosticHandler.
|
||||||
void *LLVMContext::getDiagnosticContext() const {
|
void *LLVMContext::getInlineAsmDiagnosticContext() const {
|
||||||
return pImpl->DiagContext;
|
return pImpl->InlineAsmDiagContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLVMContext::emitError(const Twine &ErrorStr) {
|
void LLVMContext::emitError(const Twine &ErrorStr) {
|
||||||
|
@ -107,7 +109,7 @@ void LLVMContext::emitError(const Instruction *I, const Twine &ErrorStr) {
|
||||||
|
|
||||||
void LLVMContext::emitError(unsigned LocCookie, const Twine &ErrorStr) {
|
void LLVMContext::emitError(unsigned LocCookie, const Twine &ErrorStr) {
|
||||||
// If there is no error handler installed, just print the error and exit.
|
// If there is no error handler installed, just print the error and exit.
|
||||||
if (pImpl->DiagHandler == 0) {
|
if (pImpl->InlineAsmDiagHandler == 0) {
|
||||||
errs() << "error: " << ErrorStr << "\n";
|
errs() << "error: " << ErrorStr << "\n";
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -115,7 +117,7 @@ void LLVMContext::emitError(unsigned LocCookie, const Twine &ErrorStr) {
|
||||||
// If we do have an error handler, we can report the error and keep going.
|
// If we do have an error handler, we can report the error and keep going.
|
||||||
SMDiagnostic Diag("", SourceMgr::DK_Error, ErrorStr.str());
|
SMDiagnostic Diag("", SourceMgr::DK_Error, ErrorStr.str());
|
||||||
|
|
||||||
pImpl->DiagHandler(Diag, pImpl->DiagContext, LocCookie);
|
pImpl->InlineAsmDiagHandler(Diag, pImpl->InlineAsmDiagContext, LocCookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
|
@ -35,8 +35,8 @@ LLVMContextImpl::LLVMContextImpl(LLVMContext &C)
|
||||||
Int16Ty(C, 16),
|
Int16Ty(C, 16),
|
||||||
Int32Ty(C, 32),
|
Int32Ty(C, 32),
|
||||||
Int64Ty(C, 64) {
|
Int64Ty(C, 64) {
|
||||||
DiagHandler = 0;
|
InlineAsmDiagHandler = 0;
|
||||||
DiagContext = 0;
|
InlineAsmDiagContext = 0;
|
||||||
NamedStructTypesUniqueID = 0;
|
NamedStructTypesUniqueID = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -236,8 +236,8 @@ public:
|
||||||
/// will be automatically deleted if this context is deleted.
|
/// will be automatically deleted if this context is deleted.
|
||||||
SmallPtrSet<Module*, 4> OwnedModules;
|
SmallPtrSet<Module*, 4> OwnedModules;
|
||||||
|
|
||||||
LLVMContext::DiagHandlerTy DiagHandler;
|
LLVMContext::InlineAsmDiagHandlerTy InlineAsmDiagHandler;
|
||||||
void *DiagContext;
|
void *InlineAsmDiagContext;
|
||||||
|
|
||||||
typedef DenseMap<DenseMapAPIntKeyInfo::KeyTy, ConstantInt*,
|
typedef DenseMap<DenseMapAPIntKeyInfo::KeyTy, ConstantInt*,
|
||||||
DenseMapAPIntKeyInfo> IntMapTy;
|
DenseMapAPIntKeyInfo> IntMapTy;
|
||||||
|
|
Loading…
Reference in New Issue