From 4d9d2cc77fb58c39e5386d1aeb8dba91b87e5199 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Sat, 2 Jul 2016 13:05:12 +0000 Subject: [PATCH] [Hexagon] Create global std::map lazily. This could of course be a simple binary search with no global state involved at all if someone cares enough. Just don't make everyone linking the hexagon backend pay for it on process startup and shutdown. llvm-svn: 274437 --- .../lib/Target/Hexagon/MCTargetDesc/HexagonMCDuplexInfo.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCDuplexInfo.cpp b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCDuplexInfo.cpp index e6194f61a6ba..88336217cc8d 100644 --- a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCDuplexInfo.cpp +++ b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCDuplexInfo.cpp @@ -80,9 +80,6 @@ static const std::pair opcodeData[] = { std::make_pair((unsigned)V4_SS2_storewi0, 4096), std::make_pair((unsigned)V4_SS2_storewi1, 4352)}; -static std::map - subinstOpcodeMap(std::begin(opcodeData), std::end(opcodeData)); - bool HexagonMCInstrInfo::isDuplexPairMatch(unsigned Ga, unsigned Gb) { switch (Ga) { case HexagonII::HSIG_None: @@ -587,6 +584,9 @@ bool HexagonMCInstrInfo::isOrderedDuplexPair(MCInstrInfo const &MCII, unsigned MIaG = HexagonMCInstrInfo::getDuplexCandidateGroup(MIa), MIbG = HexagonMCInstrInfo::getDuplexCandidateGroup(MIb); + static std::map subinstOpcodeMap(std::begin(opcodeData), + std::end(opcodeData)); + // If a duplex contains 2 insns in the same group, the insns must be // ordered such that the numerically smaller opcode is in slot 1. if ((MIaG != HexagonII::HSIG_None) && (MIaG == MIbG) && bisReversable) {