From f18429372f12b571aef539855c4dbef23a96f494 Mon Sep 17 00:00:00 2001 From: Jeremy Morse Date: Sun, 30 Jan 2022 20:25:00 +0000 Subject: [PATCH] [DebugInfo][InstrRef][NFC] Add a missing assignment operator ValueIDNum is supposed to be a value type that boils down to a uint64_t, that has some bitfields for convenience. If we use the default operator=, we end up with each bit field being individually assigned, which is un-necessarily slow. Implement the assignment operator by just copying the uint64_t value of the object. This is quicker, and matches how the comparison operators work already. Doing so is 0.1% faster on the compile-time-tracker. --- llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h b/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h index ed0c55a4cb1e..6c0d14e1470c 100644 --- a/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h +++ b/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h @@ -132,6 +132,11 @@ public: u.s = {Block, Inst, Loc.asU64()}; } + ValueIDNum &operator=(const ValueIDNum &Other) { + u.Value = Other.u.Value; + return *this; + } + uint64_t getBlock() const { return u.s.BlockNo; } uint64_t getInst() const { return u.s.InstNo; } uint64_t getLoc() const { return u.s.LocNo; }