summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2013-09-11 04:44:30 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2013-09-11 04:44:30 +0000
commit5a1b2045dc9d46f06d40fdc283c38d0f3ac7b3b5 (patch)
tree9b482facc60149862fe2aac2cbd16896201a1857 /clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp
parenta53cbc58211878b0bec5e4d149aa193facb952ba (diff)
downloadbcm5719-llvm-5a1b2045dc9d46f06d40fdc283c38d0f3ac7b3b5.tar.gz
bcm5719-llvm-5a1b2045dc9d46f06d40fdc283c38d0f3ac7b3b5.zip
[-cxx-abi microsoft] Canonicalize array parameters better
Summary: More accurately characterize the nature of array parameters. Doing this removes false back-reference opportunities. Remove some hacks now that we characterize these better. Reviewers: rnk, timurrrr, whunt, cdavis5x CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1626 llvm-svn: 190488
Diffstat (limited to 'clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp')
-rw-r--r--clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp b/clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp
index 672a48641ca..50a238340e1 100644
--- a/clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp
+++ b/clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp
@@ -204,3 +204,37 @@ void mangle_fwd(char * x) {}
void mangle_no_fwd(char * x) {}
// CHECK: "\01?mangle_no_fwd@@YAXPAD@Z"
// X64: "\01?mangle_no_fwd@@YAXPEAD@Z"
+
+// The first argument gets mangled as-if it were written "int *const"
+// The second arg should not form a backref because it isn't qualified
+void mangle_no_backref0(int[], int *) {}
+// CHECK: "\01?mangle_no_backref0@@YAXQAHPAH@Z"
+// X64: "\01?mangle_no_backref0@@YAXQEAHPEAH@Z"
+
+void mangle_no_backref1(int[], int *const) {}
+// CHECK: "\01?mangle_no_backref1@@YAXQAHQAH@Z"
+// X64: "\01?mangle_no_backref1@@YAXQEAHQEAH@Z"
+
+typedef void fun_type(void);
+typedef void (*ptr_to_fun_type)(void);
+
+// Pointer to function types don't backref with function types
+void mangle_no_backref2(fun_type, ptr_to_fun_type) {}
+// CHECK: "\01?mangle_no_backref2@@YAXP6AXXZP6AXXZ@Z"
+// X64: "\01?mangle_no_backref2@@YAXP6AXXZP6AXXZ@Z"
+
+void mangle_yes_backref0(int[], int []) {}
+// CHECK: "\01?mangle_yes_backref0@@YAXQAH0@Z"
+// X64: "\01?mangle_yes_backref0@@YAXQEAH0@Z"
+
+void mangle_yes_backref1(int *const, int *const) {}
+// CHECK: "\01?mangle_yes_backref1@@YAXQAH0@Z"
+// X64: "\01?mangle_yes_backref1@@YAXQEAH0@Z"
+
+void mangle_yes_backref2(fun_type *const[], ptr_to_fun_type const[]) {}
+// CHECK: "\01?mangle_yes_backref2@@YAXQBQ6AXXZ0@Z"
+// X64: "\01?mangle_yes_backref2@@YAXQEBQ6AXXZ0@Z"
+
+void mangle_yes_backref3(ptr_to_fun_type *const, void (**const)(void)) {}
+// CHECK: "\01?mangle_yes_backref3@@YAXQAP6AXXZ0@Z"
+// X64: "\01?mangle_yes_backref3@@YAXQEAP6AXXZ0@Z"
OpenPOWER on IntegriCloud