Add warning capabilities in LLVM.
authorQuentin Colombet <qcolombet@apple.com>
Mon, 16 Dec 2013 23:22:51 +0000 (23:22 +0000)
committerQuentin Colombet <qcolombet@apple.com>
Mon, 16 Dec 2013 23:22:51 +0000 (23:22 +0000)
commitb6c4a845927de16b585639f766a734daf6a861f1
treece69befe218deb8838cdd2a31c4fef3a321e9662
parent4faf2ba0c7ef9f28a5d4a6c096105ff8aca94279
Add warning capabilities in LLVM.

The patch adds a new LLVMContext::diagnose that can be used to communicate to
the front-end, if any, that something of interest happened.
The diagnostics are supported by a new abstraction, the DiagnosticInfo class.
The base class contains the following information:
- The kind of the report: What this is about.
- The severity of the report: How bad this is.

This patch also adds 2 classes:
- DiagnosticInfoInlineAsm: For inline asm reporting. Basically, this diagnostic
will be used to switch to the new diagnostic API for LLVMContext::emitError.
- DiagnosticStackSize: For stack size reporting. Comes as a replacement of the
hard coded warning in PEI.

This patch also features dynamic diagnostic identifiers. In other words plugins
can use this infrastructure for their own diagnostics (for more details, see
getNextAvailablePluginDiagnosticKind).

This patch introduces a new DiagnosticHandlerTy and a new DiagnosticContext in
the LLVMContext that should be set by the front-end to be able to map these
diagnostics in its own system.

http://llvm-reviews.chandlerc.com/D2376
<rdar://problem/15515174>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197438 91177308-0d34-0410-b5e6-96231b3b80d8
12 files changed:
include/llvm/IR/LLVMContext.h
include/llvm/Support/DiagnosticInfo.h [new file with mode: 0644]
include/llvm/Support/DiagnosticPrinter.h [new file with mode: 0644]
lib/CodeGen/PrologEpilogInserter.cpp
lib/IR/LLVMContext.cpp
lib/IR/LLVMContextImpl.cpp
lib/IR/LLVMContextImpl.h
lib/Support/CMakeLists.txt
lib/Support/DiagnosticInfo.cpp [new file with mode: 0644]
lib/Support/DiagnosticPrinter.cpp [new file with mode: 0644]
test/CodeGen/ARM/warn-stack.ll
test/CodeGen/X86/warn-stack.ll