diff options
author | Richard Smith <richard@metafoo.co.uk> | 2019-12-18 10:44:29 -0800 |
---|---|---|
committer | Richard Smith <richard@metafoo.co.uk> | 2019-12-18 10:47:02 -0800 |
commit | b6e90a1a1093210784ed3614b51ebcc31c2a1dcf (patch) | |
tree | cdbfdf3f040b04eb151b5b92952db95ed6a3487d /llvm/unittests/Support | |
parent | cfe316007fb8492535d697717c24ce72621a8d5e (diff) | |
download | llvm-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')
-rw-r--r-- | llvm/unittests/Support/ItaniumManglingCanonicalizerTest.cpp | 15 |
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>, |