llvm-project/llvm/lib/Linker/LinkDiagnosticInfo.h
Justin Bogner b7bb256703
Warn on misuse of DiagnosticInfo classes that hold Twines (#137397)
This annotates the `Twine` passed to the constructors of the various
DiagnosticInfo subclasses with `[[clang::lifetimebound]]`, which causes
us to warn when we would try to print the twine after it had already
been destructed.

We also update `DiagnosticInfoUnsupported` to hold a `const Twine &`
like all of the other DiagnosticInfo classes, since this warning allows
us to clean up all of the places where it was being used incorrectly.
2025-05-28 12:26:39 -07:00

26 lines
774 B
C++

//===- LinkDiagnosticInfo.h -------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIB_LINKER_LINK_DIAGNOSTIC_INFO_H
#define LLVM_LIB_LINKER_LINK_DIAGNOSTIC_INFO_H
#include "llvm/IR/DiagnosticInfo.h"
namespace llvm {
class LinkDiagnosticInfo : public DiagnosticInfo {
const Twine &Msg;
public:
LinkDiagnosticInfo(DiagnosticSeverity Severity,
const Twine &Msg LLVM_LIFETIME_BOUND);
void print(DiagnosticPrinter &DP) const override;
};
}
#endif