[llvm] 155e0cf - Reland [LTO] Demangle the function name in DiagnosticInfoDontCall message
Arthur Eubanks via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 30 11:24:35 PST 2023
Author: Kyuwon Cho
Date: 2023-01-30T11:19:10-08:00
New Revision: 155e0cf5dc2ffba0a509b1dea25fb4c31eeb367e
URL: https://github.com/llvm/llvm-project/commit/155e0cf5dc2ffba0a509b1dea25fb4c31eeb367e
DIFF: https://github.com/llvm/llvm-project/commit/155e0cf5dc2ffba0a509b1dea25fb4c31eeb367e.diff
LOG: Reland [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
Relanded with proper IR -> Demangle dependency.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D142844
Added:
Modified:
llvm/lib/IR/CMakeLists.txt
llvm/lib/IR/DiagnosticInfo.cpp
llvm/test/CodeGen/X86/attr-dontcall.ll
Removed:
################################################################################
diff --git a/llvm/lib/IR/CMakeLists.txt b/llvm/lib/IR/CMakeLists.txt
index aacfe2b637989..88c493860c8d4 100644
--- a/llvm/lib/IR/CMakeLists.txt
+++ b/llvm/lib/IR/CMakeLists.txt
@@ -78,6 +78,7 @@ add_llvm_component_library(LLVMCore
LINK_COMPONENTS
BinaryFormat
+ Demangle
Remarks
Support
TargetParser
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..7de44b81dfeaa 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"
More information about the llvm-commits
mailing list