aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/ItaniumManglingCanonicalizerTest.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard@metafoo.co.uk>2019-12-18 10:44:29 -0800
committerRichard Smith <richard@metafoo.co.uk>2019-12-18 10:47:02 -0800
commitb6e90a1a1093210784ed3614b51ebcc31c2a1dcf (patch)
treecdbfdf3f040b04eb151b5b92952db95ed6a3487d /llvm/unittests/Support/ItaniumManglingCanonicalizerTest.cpp
parentcfe316007fb8492535d697717c24ce72621a8d5e (diff)
downloadllvm-b6e90a1a1093210784ed3614b51ebcc31c2a1dcf.zip
llvm-b6e90a1a1093210784ed3614b51ebcc31c2a1dcf.tar.gz
llvm-b6e90a1a1093210784ed3614b51ebcc31c2a1dcf.tar.bz2
llvm-cxxmap: fix support for remapping non-mangled names.
Remappings involving extern "C" names were already supported in the context of <local-name>s, but this support didn't work for remapping the complete mangling itself. (Eg, we would remap X<foo> but not foo itself, if foo is an extern "C" function.)
Diffstat (limited to 'llvm/unittests/Support/ItaniumManglingCanonicalizerTest.cpp')
-rw-r--r--llvm/unittests/Support/ItaniumManglingCanonicalizerTest.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/llvm/unittests/Support/ItaniumManglingCanonicalizerTest.cpp b/llvm/unittests/Support/ItaniumManglingCanonicalizerTest.cpp
index 91432899..b20cdcf 100644
--- a/llvm/unittests/Support/ItaniumManglingCanonicalizerTest.cpp
+++ b/llvm/unittests/Support/ItaniumManglingCanonicalizerTest.cpp
@@ -249,6 +249,19 @@ static std::vector<Testcase> getTestcases() {
{"_Z1fRA1_i"}, {"_Z1fRA_f"},
}
},
+
+ // Unmangled names can be remapped as complete encodings.
+ {
+ {
+ {FragmentKind::Encoding, "3foo", "3bar"},
+ },
+ {
+ // foo == bar
+ {"foo", "bar"},
+ // void f<foo>() == void f<bar>()
+ {"_Z1fIL_Z3fooEEvv", "_Z1fIL_Z3barEEvv"},
+ }
+ },
};
}
@@ -343,7 +356,7 @@ TEST(ItaniumManglingCanonicalizerTest, TestInvalidManglings) {
EquivalenceError::InvalidSecondMangling);
EXPECT_EQ(Canonicalizer.canonicalize("_Z3fooE"),
llvm::ItaniumManglingCanonicalizer::Key());
- EXPECT_EQ(Canonicalizer.canonicalize("foo"),
+ EXPECT_EQ(Canonicalizer.canonicalize("_Zfoo"),
llvm::ItaniumManglingCanonicalizer::Key());
// A reference to a template parameter ('T_' etc) cannot appear in a <name>,