diff --git a/llvm/lib/Demangle/RustDemangle.cpp b/llvm/lib/Demangle/RustDemangle.cpp index 9a4180feb227..8d43b6efcab0 100644 --- a/llvm/lib/Demangle/RustDemangle.cpp +++ b/llvm/lib/Demangle/RustDemangle.cpp @@ -454,6 +454,16 @@ void Demangler::demangleType() { print(")"); break; } + case 'R': + print("&"); + // FIXME demangle []. + demangleType(); + break; + case 'Q': + print("&mut "); + // FIXME demangle []. + demangleType(); + break; case 'P': print("*const "); demangleType(); diff --git a/llvm/test/Demangle/rust.test b/llvm/test/Demangle/rust.test index 46eea4dfdc42..0634f451099b 100644 --- a/llvm/test/Demangle/rust.test +++ b/llvm/test/Demangle/rust.test @@ -175,6 +175,12 @@ CHECK: types::<(_, _)> CHECK: types::<(_, _, _)> _RIC5typesTpppEE +CHECK: types::<&_> + _RIC5typesRpE + +CHECK: types::<&mut _> + _RIC5typesQpE + CHECK: types::<*const _> _RIC5typesPpE