Add backend dignostic printer for unsupported features

Re-commit of r258951 after fixing layering violation.

The related LLVM patch adds a backend diagnostic type for reporting
unsupported features, this adds a printer for them to clang.

In the case where debug location information is not available, I've
changed the printer to report the location as the first line of the
function, rather than the closing brace, as the latter does not give the
user any information. This also affects optimisation remarks.

Differential Revision: http://reviews.llvm.org/D16590

llvm-svn: 259035
diff --git a/llvm/test/CodeGen/AMDGPU/global-zero-initializer.ll b/llvm/test/CodeGen/AMDGPU/global-zero-initializer.ll
index 45aa8bf..522a4b2 100644
--- a/llvm/test/CodeGen/AMDGPU/global-zero-initializer.ll
+++ b/llvm/test/CodeGen/AMDGPU/global-zero-initializer.ll
@@ -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