mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-04 08:16:49 +00:00
b3b4113a23
The demangler had no concept of operator precendence, and would parenthesize many more subexpressions than necessary. In particular it would parenthesize primary-expressions, such as '4', which just looks strange. It would also parenthesize '>' expressions, just in case they were inside a template parameter list. This patch fixes both issues. * Add operator precedence to the OpInfo structure, and add a subexpression helper that will parenthesize a lower precedence subexpression. * Add a 'greater-than is greater-than' indicator to the output buffer, so the expression printer knows whether it is immediately inside a template parameter list (and must therefore parenthesize 'expr > expr'). This is a counter, so that ... * Add open and close printers to the output buffer, that increment and decrement the gt-is-gt indicator. * Parenthesize comma operators inside comma-separated lists. (probably a rare case, but still). This dramatically reduces the extraneous parentheses being printed. Reviewed By: dblaikie, bruno Differential Revision: https://reviews.llvm.org/D120905