forked from OSchip/llvm-project
Put MCSectionCOFF::Name into the MCContext instead of leaking it.
llvm-svn: 99231
This commit is contained in:
parent
00c291b012
commit
a99d232803
|
@ -42,9 +42,8 @@ namespace llvm {
|
|||
};
|
||||
|
||||
class MCSectionCOFF : public MCSection {
|
||||
// FIXME: This memory is leaked because MCSectionCOFF is bump pointer
|
||||
// allocated and this never gets freed.
|
||||
std::string Name;
|
||||
// The memory for this string is stored in the same MCContext as *this.
|
||||
StringRef Name;
|
||||
|
||||
/// IsDirective - This is true if the section name is a directive, not
|
||||
/// something that should be printed with ".section".
|
||||
|
@ -61,7 +60,7 @@ namespace llvm {
|
|||
static MCSectionCOFF *Create(StringRef Name, bool IsDirective,
|
||||
SectionKind K, MCContext &Ctx);
|
||||
|
||||
const std::string &getName() const { return Name; }
|
||||
StringRef getName() const { return Name; }
|
||||
bool isDirective() const { return IsDirective; }
|
||||
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
|
|
|
@ -26,7 +26,11 @@ MCSection::~MCSection() {
|
|||
|
||||
MCSectionCOFF *MCSectionCOFF::
|
||||
Create(StringRef Name, bool IsDirective, SectionKind K, MCContext &Ctx) {
|
||||
return new (Ctx) MCSectionCOFF(Name, IsDirective, K);
|
||||
char *NameCopy = static_cast<char*>(
|
||||
Ctx.Allocate(Name.size(), /*Alignment=*/1));
|
||||
memcpy(NameCopy, Name.data(), Name.size());
|
||||
return new (Ctx) MCSectionCOFF(StringRef(NameCopy, Name.size()),
|
||||
IsDirective, K);
|
||||
}
|
||||
|
||||
void MCSectionCOFF::PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
|
|
Loading…
Reference in New Issue