diff options
author | Craig Topper <craig.topper@intel.com> | 2018-03-24 07:15:47 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-03-24 07:15:47 +0000 |
commit | c0e1880db9fa4665e9a6f5819a0ca51d6d7bdc37 (patch) | |
tree | 997bc49959f6c82739ff757664768985691102f4 | |
parent | a51ec94d684b002ccc004dddf4c0ce75678d8b04 (diff) | |
download | bcm5719-llvm-c0e1880db9fa4665e9a6f5819a0ca51d6d7bdc37.tar.gz bcm5719-llvm-c0e1880db9fa4665e9a6f5819a0ca51d6d7bdc37.zip |
[X86] Use unique_ptr to simplify memory management. NFC
llvm-svn: 328413
-rw-r--r-- | llvm/utils/TableGen/X86DisassemblerShared.h | 4 | ||||
-rw-r--r-- | llvm/utils/TableGen/X86DisassemblerTables.cpp | 12 | ||||
-rw-r--r-- | llvm/utils/TableGen/X86DisassemblerTables.h | 2 | ||||
-rw-r--r-- | llvm/utils/TableGen/X86RecognizableInstr.cpp | 16 |
4 files changed, 14 insertions, 20 deletions
diff --git a/llvm/utils/TableGen/X86DisassemblerShared.h b/llvm/utils/TableGen/X86DisassemblerShared.h index 550f619c02f..220765f7241 100644 --- a/llvm/utils/TableGen/X86DisassemblerShared.h +++ b/llvm/utils/TableGen/X86DisassemblerShared.h @@ -49,6 +49,10 @@ struct OpcodeDecision { /// entries in this table, rather than 2^(ATTR_max). struct ContextDecision { OpcodeDecision opcodeDecisions[llvm::X86Disassembler::IC_max]; + + ContextDecision() { + memset(opcodeDecisions, 0, sizeof(opcodeDecisions)); + } }; #endif diff --git a/llvm/utils/TableGen/X86DisassemblerTables.cpp b/llvm/utils/TableGen/X86DisassemblerTables.cpp index e410af0d034..91f15e2f058 100644 --- a/llvm/utils/TableGen/X86DisassemblerTables.cpp +++ b/llvm/utils/TableGen/X86DisassemblerTables.cpp @@ -644,21 +644,13 @@ static const char* stringForDecisionType(ModRMDecisionType dt) { } DisassemblerTables::DisassemblerTables() { - unsigned i; - - for (i = 0; i < array_lengthof(Tables); i++) { - Tables[i] = new ContextDecision; - memset(Tables[i], 0, sizeof(ContextDecision)); - } + for (unsigned i = 0; i < array_lengthof(Tables); i++) + Tables[i] = llvm::make_unique<ContextDecision>(); HasConflicts = false; } DisassemblerTables::~DisassemblerTables() { - unsigned i; - - for (i = 0; i < array_lengthof(Tables); i++) - delete Tables[i]; } void DisassemblerTables::emitModRMDecision(raw_ostream &o1, raw_ostream &o2, diff --git a/llvm/utils/TableGen/X86DisassemblerTables.h b/llvm/utils/TableGen/X86DisassemblerTables.h index 552bbe95f7c..bea94277502 100644 --- a/llvm/utils/TableGen/X86DisassemblerTables.h +++ b/llvm/utils/TableGen/X86DisassemblerTables.h @@ -41,7 +41,7 @@ private: /// [4] XOP8 map opcode /// [5] XOP9 map opcode /// [6] XOPA map opcode - ContextDecision* Tables[7]; + std::unique_ptr<ContextDecision> Tables[7]; // Table of ModRM encodings. typedef std::map<std::vector<unsigned>, unsigned> ModRMMapTy; diff --git a/llvm/utils/TableGen/X86RecognizableInstr.cpp b/llvm/utils/TableGen/X86RecognizableInstr.cpp index 57257d8ac6e..e0aef750f0d 100644 --- a/llvm/utils/TableGen/X86RecognizableInstr.cpp +++ b/llvm/utils/TableGen/X86RecognizableInstr.cpp @@ -695,7 +695,7 @@ void RecognizableInstr::emitDecodePath(DisassemblerTables &tables) const { case X86Local::ThreeDNow: opcodeType = TWOBYTE; break; } - ModRMFilter *filter = nullptr; + std::unique_ptr<ModRMFilter> filter; switch (Form) { default: llvm_unreachable("Invalid form!"); case X86Local::Pseudo: llvm_unreachable("Pseudo should not be emitted!"); @@ -707,36 +707,36 @@ void RecognizableInstr::emitDecodePath(DisassemblerTables &tables) const { case X86Local::RawFrmDstSrc: case X86Local::RawFrmImm8: case X86Local::RawFrmImm16: - filter = new DumbFilter(); + filter = llvm::make_unique<DumbFilter>(); break; case X86Local::MRMDestReg: case X86Local::MRMSrcReg: case X86Local::MRMSrcReg4VOp3: case X86Local::MRMSrcRegOp4: case X86Local::MRMXr: - filter = new ModFilter(true); + filter = llvm::make_unique<ModFilter>(true); break; case X86Local::MRMDestMem: case X86Local::MRMSrcMem: case X86Local::MRMSrcMem4VOp3: case X86Local::MRMSrcMemOp4: case X86Local::MRMXm: - filter = new ModFilter(false); + filter = llvm::make_unique<ModFilter>(false); break; case X86Local::MRM0r: case X86Local::MRM1r: case X86Local::MRM2r: case X86Local::MRM3r: case X86Local::MRM4r: case X86Local::MRM5r: case X86Local::MRM6r: case X86Local::MRM7r: - filter = new ExtendedFilter(true, Form - X86Local::MRM0r); + filter = llvm::make_unique<ExtendedFilter>(true, Form - X86Local::MRM0r); break; case X86Local::MRM0m: case X86Local::MRM1m: case X86Local::MRM2m: case X86Local::MRM3m: case X86Local::MRM4m: case X86Local::MRM5m: case X86Local::MRM6m: case X86Local::MRM7m: - filter = new ExtendedFilter(false, Form - X86Local::MRM0m); + filter = llvm::make_unique<ExtendedFilter>(false, Form - X86Local::MRM0m); break; X86_INSTR_MRM_MAPPING - filter = new ExactFilter(0xC0 + Form - X86Local::MRM_C0); \ + filter = llvm::make_unique<ExactFilter>(0xC0 + Form - X86Local::MRM_C0); break; } // switch (Form) @@ -771,8 +771,6 @@ void RecognizableInstr::emitDecodePath(DisassemblerTables &tables) const { VEX_WPrefix == X86Local::VEX_WIG, AddressSize); } - delete filter; - #undef MAP } |