[llvm] [TableGen][DecoderEmitter] Fix decoder reading bytes past instruction (PR #154916)

Sergei Barannikov via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 22 13:59:42 PDT 2025


================
@@ -501,28 +516,47 @@ class FilterChooser {
   };
 
 public:
+  /// Constructs a top-level filter chooser.
   FilterChooser(ArrayRef<InstructionEncoding> Encodings,
-                ArrayRef<unsigned> EncodingIDs, unsigned BW,
+                ArrayRef<unsigned> EncodingIDs, unsigned MaxFilterWidth,
                 const DecoderEmitter *E)
-      : Encodings(Encodings), EncodingIDs(EncodingIDs), FilterBits(BW),
-        Parent(nullptr), BitWidth(BW), Emitter(E) {
+      : Encodings(Encodings), EncodingIDs(EncodingIDs), Parent(nullptr),
+        MaxFilterWidth(MaxFilterWidth), Emitter(E) {
+    // Sort encoding IDs once.
----------------
s-barannikov wrote:

This sorting is not necessary for fixed length encodings in the first place, it could be replaced with an assert that all encodings have the same width. This is the case now, but in the future might want to group encodings with different widths as I suggested in [#146593](https://github.com/llvm/llvm-project/pull/146593#issuecomment-3208088917). 

The size issue is resolved by std::min few lines below.


https://github.com/llvm/llvm-project/pull/154916


More information about the llvm-commits mailing list