diff options
author | Chris Mihelich <cmihelic@google.com> | 2024-06-07 11:34:21 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-06-07 11:35:12 -0700 |
commit | c6000317f1cef3069315de81f918e1ac556e2ace (patch) | |
tree | b2bc66982ec54a8eb44ee716e8ab958f363465d8 /absl/debugging/internal/demangle_test.cc | |
parent | c586e8d88af54250257419980c3e04fd410e037c (diff) | |
download | abseil-c6000317f1cef3069315de81f918e1ac556e2ace.tar.gz abseil-c6000317f1cef3069315de81f918e1ac556e2ace.tar.bz2 abseil-c6000317f1cef3069315de81f918e1ac556e2ace.zip |
Demangle <extended-qualifier> in types, e.g., U5AS128 for address_space(128).
PiperOrigin-RevId: 641310017
Change-Id: I0f10a2a1965e842db4efda455e0cdfbeb6656fa5
Diffstat (limited to 'absl/debugging/internal/demangle_test.cc')
-rw-r--r-- | absl/debugging/internal/demangle_test.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/absl/debugging/internal/demangle_test.cc b/absl/debugging/internal/demangle_test.cc index 3285f2ca..9100d5f1 100644 --- a/absl/debugging/internal/demangle_test.cc +++ b/absl/debugging/internal/demangle_test.cc @@ -760,6 +760,40 @@ TEST(Demangle, GnuVectorSizeIsADependentOperatorExpression) { EXPECT_STREQ("f<>()", tmp); } +TEST(Demangle, SimpleAddressSpace) { + char tmp[80]; + + // Source: + // + // void f(const int __attribute__((address_space(128)))*) {} + // + // LLVM demangling: + // + // f(int const AS128*) + // + // Itanium ABI 5.1.5.1, "Qualified types", notes that address_space is mangled + // nonuniformly as a legacy exception: the number is part of the source-name + // if nondependent but is an expression in template-args if dependent. Thus + // it is a convenient test case for both forms. + EXPECT_TRUE(Demangle("_Z1fPU5AS128Ki", tmp, sizeof(tmp))); + EXPECT_STREQ("f()", tmp); +} + +TEST(Demangle, DependentAddressSpace) { + char tmp[80]; + + // Source: + // + // template <int n> void f (const int __attribute__((address_space(n)))*) {} + // template void f<128>(const int __attribute__((address_space(128)))*); + // + // LLVM demangling: + // + // void f<128>(int AS<128>*) + EXPECT_TRUE(Demangle("_Z1fILi128EEvPU2ASIT_Ei", tmp, sizeof(tmp))); + EXPECT_STREQ("f<>()", tmp); +} + TEST(Demangle, TransactionSafeEntryPoint) { char tmp[80]; |