[llvm] cb05c2f - [LTO] Demangle the function name in DiagnosticInfoDontCall message

Arthur Eubanks via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 30 10:16:16 PST 2023


Author: Kyuwon Cho
Date: 2023-01-30T10:11:20-08:00
New Revision: cb05c2ffc79eefe74c569263e27fcb5fad167ba3

URL: https://github.com/llvm/llvm-project/commit/cb05c2ffc79eefe74c569263e27fcb5fad167ba3
DIFF: https://github.com/llvm/llvm-project/commit/cb05c2ffc79eefe74c569263e27fcb5fad167ba3.diff

LOG: [LTO] Demangle the function name in DiagnosticInfoDontCall message

Previously, dontcall attribute message on LTO prints the mangled function name.

Fixes https://github.com/llvm/llvm-project/issues/58933

Reviewed By: aeubanks

Differential Revision: https://reviews.llvm.org/D142844

Added: 
    

Modified: 
    llvm/lib/IR/DiagnosticInfo.cpp
    llvm/test/CodeGen/X86/attr-dontcall.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/IR/DiagnosticInfo.cpp b/llvm/lib/IR/DiagnosticInfo.cpp
index fb238e2aac59c..a19d9d607f4b6 100644
--- a/llvm/lib/IR/DiagnosticInfo.cpp
+++ b/llvm/lib/IR/DiagnosticInfo.cpp
@@ -15,6 +15,7 @@
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/ADT/Twine.h"
 #include "llvm/ADT/iterator_range.h"
+#include "llvm/Demangle/Demangle.h"
 #include "llvm/IR/BasicBlock.h"
 #include "llvm/IR/Constants.h"
 #include "llvm/IR/DebugInfoMetadata.h"
@@ -440,7 +441,8 @@ void llvm::diagnoseDontCall(const CallInst &CI) {
 }
 
 void DiagnosticInfoDontCall::print(DiagnosticPrinter &DP) const {
-  DP << "call to " << getFunctionName() << " marked \"dontcall-";
+  DP << "call to " << demangle(getFunctionName().str())
+     << " marked \"dontcall-";
   if (getSeverity() == DiagnosticSeverity::DS_Error)
     DP << "error\"";
   else

diff  --git a/llvm/test/CodeGen/X86/attr-dontcall.ll b/llvm/test/CodeGen/X86/attr-dontcall.ll
index 8b518aee6dce2..ea3ad180d515e 100644
--- a/llvm/test/CodeGen/X86/attr-dontcall.ll
+++ b/llvm/test/CodeGen/X86/attr-dontcall.ll
@@ -27,7 +27,34 @@ define void @bar4() {
   ret void
 }
 
+declare i32 @_Z3fooi(i32) "dontcall-error"
+define void @demangle1() {
+  call i32 @_Z3fooi (i32 0)
+  ret void
+}
+declare float @_Z3barf(float) "dontcall-error"
+define void @demangle2() {
+  call float @_Z3barf(float 0.0)
+  ret void
+}
+
+declare i32 @_RNvC1a3baz() "dontcall-error"
+define void @demangle3() {
+  call i32 @_RNvC1a3baz()
+  ret void
+}
+
+
+declare i32 @_Z3fooILi79EEbU7_ExtIntIXT_EEi(i32) "dontcall-error"
+define void @demangle4() {
+  call i32 @_Z3fooILi79EEbU7_ExtIntIXT_EEi(i32 0)
+  ret void
+}
 ; CHECK: error: call to foo marked "dontcall-error": e
 ; CHECK: warning: call to foo2 marked "dontcall-warn": w
 ; CHECK: warning: call to foo3 marked "dontcall-warn"{{$}}
 ; CHECK: warning: call to foo4 marked "dontcall-warn": cast
+; CHECK: error: call to foo(int) marked "dontcall-error"
+; CHECK: error: call to bar(float) marked "dontcall-error"
+; CHECK: error: call to a::baz marked "dontcall-error"
+; CHECK: error: call to bool foo<79>(int _ExtInt<79>) marked "dontcall-error"
\ No newline at end of file


        


More information about the llvm-commits mailing list