diff options
author | David Majnemer <david.majnemer@gmail.com> | 2013-09-11 04:44:30 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2013-09-11 04:44:30 +0000 |
commit | 5a1b2045dc9d46f06d40fdc283c38d0f3ac7b3b5 (patch) | |
tree | 9b482facc60149862fe2aac2cbd16896201a1857 /clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp | |
parent | a53cbc58211878b0bec5e4d149aa193facb952ba (diff) | |
download | bcm5719-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.cpp | 34 |
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" |