aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/DebugInfo/CodeView/DebugCrossExSubsection.cpp
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2022-01-28 09:27:28 -0800
committerNathan Sidwell <nathan@acm.org>2022-02-08 06:28:26 -0800
commit28669bd091e1542d8318bec4cb2219d65cb73b07 (patch)
tree6668181977b282ac42c5c0e1b45da275b8ac900a /llvm/lib/DebugInfo/CodeView/DebugCrossExSubsection.cpp
parent6c174ab2ad0676b295f11f6c3913eff9289fa6b9 (diff)
downloadllvm-28669bd091e1542d8318bec4cb2219d65cb73b07.zip
llvm-28669bd091e1542d8318bec4cb2219d65cb73b07.tar.gz
llvm-28669bd091e1542d8318bec4cb2219d65cb73b07.tar.bz2
[demangler] Improve ->* & .* demangling
The demangler treats ->* as a BinaryExpr, but .* as a MemberExpr. That's inconsistent. This makes the former a MemberExpr too. However, in order to not regress the paren output, MemberExpr::print is modified to parenthesize the MemberExpr if the operator ends with '*'. Printing is affected thusly: Before: obj.member obj->member obj.*member (obj) ->* (member) After: obj.member # Unchanged obj->member # Unchanged obj.*(member) # Added paren member operand obj->*(member) # Removed paren on object operand, less whitespace The right solution to the paren problem is to add some notion of precedence (and associativity) to Nodes, but that's a larger change that would become simpler once the refactoring I'm doing is completed. FWIW, binutils' demangler's paren algorithm has a small idea of precedence, and will generally not emit parens when the operand is unary. Reviewed By: bruno Differential Revision: https://reviews.llvm.org/D118486
Diffstat (limited to 'llvm/lib/DebugInfo/CodeView/DebugCrossExSubsection.cpp')
0 files changed, 0 insertions, 0 deletions