aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/MachineInstr.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-11-19 20:46:15 +0000
committerChris Lattner <sabre@nondot.org>2004-11-19 20:46:15 +0000
commit7b55d4fce2c2b8eebbb1fc654400c7d46fd6bfba (patch)
treec9d72cb4a2e6fe6f609179c4915d43249a10e9f7 /include/llvm/CodeGen/MachineInstr.h
parent4e459c465e861b5c97a1ccf96331a85df9ed0fef (diff)
Instead of storing std::string's for ExternalSymbol references, rely on the
fact that all ExternalSymbols are actually string literals with static storage. Thus we don't have to do anything special to hold them and we certainly don't have to copy string data around. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18007 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/MachineInstr.h')
-rw-r--r--include/llvm/CodeGen/MachineInstr.h24
1 files changed, 7 insertions, 17 deletions
diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h
index 6227490706..1d2f4f1095 100644
--- a/include/llvm/CodeGen/MachineInstr.h
+++ b/include/llvm/CodeGen/MachineInstr.h
@@ -17,7 +17,6 @@
#define LLVM_CODEGEN_MACHINEINSTR_H
#include "llvm/ADT/iterator"
-#include <string>
#include <vector>
#include <cassert>
@@ -121,7 +120,7 @@ private:
int immedVal; // Constant value for an explicit constant
MachineBasicBlock *MBB; // For MO_MachineBasicBlock type
- std::string *SymbolName; // For MO_ExternalSymbol type
+ const char *SymbolName; // For MO_ExternalSymbol type
} contents;
char flags; // see bit field definitions above
@@ -177,10 +176,10 @@ private:
extra.regNum = -1;
}
- MachineOperand(const std::string &SymName, bool isPCRelative, int Offset)
+ MachineOperand(const char *SymName, bool isPCRelative, int Offset)
: flags(isPCRelative?PCRELATIVE:0), opType(MO_ExternalSymbol) {
zeroContents ();
- contents.SymbolName = new std::string (SymName);
+ contents.SymbolName = SymName;
extra.offset = Offset;
}
@@ -190,25 +189,16 @@ public:
zeroContents ();
contents = M.contents;
extra = M.extra;
- if (isExternalSymbol())
- contents.SymbolName = new std::string(M.getSymbolName());
}
- ~MachineOperand() {
- if (isExternalSymbol())
- delete contents.SymbolName;
- }
+ ~MachineOperand() {}
const MachineOperand &operator=(const MachineOperand &MO) {
- if (isExternalSymbol()) // if old operand had a symbol name,
- delete contents.SymbolName; // release old memory
contents = MO.contents;
flags = MO.flags;
opType = MO.opType;
extra = MO.extra;
- if (isExternalSymbol())
- contents.SymbolName = new std::string(MO.getSymbolName());
return *this;
}
@@ -298,9 +288,9 @@ public:
"Wrong MachineOperand accessor");
return extra.offset;
}
- const std::string &getSymbolName() const {
+ const char *getSymbolName() const {
assert(isExternalSymbol() && "Wrong MachineOperand accessor");
- return *contents.SymbolName;
+ return contents.SymbolName;
}
/// MachineOperand methods for testing that work on any kind of
@@ -658,7 +648,7 @@ public:
/// addExternalSymbolOperand - Add an external symbol operand to this instr
///
- void addExternalSymbolOperand(const std::string &SymName, bool isPCRelative) {
+ void addExternalSymbolOperand(const char *SymName, bool isPCRelative) {
operands.push_back(MachineOperand(SymName, isPCRelative, 0));
}