aboutsummaryrefslogtreecommitdiff
path: root/final/ABI-Testsuite/test/mangling/qualifiers.xpp
diff options
context:
space:
mode:
Diffstat (limited to 'final/ABI-Testsuite/test/mangling/qualifiers.xpp')
-rwxr-xr-xfinal/ABI-Testsuite/test/mangling/qualifiers.xpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/final/ABI-Testsuite/test/mangling/qualifiers.xpp b/final/ABI-Testsuite/test/mangling/qualifiers.xpp
new file mode 100755
index 00000000..ab45f450
--- /dev/null
+++ b/final/ABI-Testsuite/test/mangling/qualifiers.xpp
@@ -0,0 +1,91 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// RUN: cxx_compiler cxx_11 -c %s -o %t.o
+// RUN: bindump %t.o | FileCheck prefixes %s
+
+// cv_qualifier_ordering
+// CHECK-DAG: _Z8functionRKi
+void function(int const &) {}
+
+// CHECK-DAG: _Z8functiooRVi
+void functioo(int volatile &) {}
+
+// Test that restrict is not generated as part of mangling
+// CHECK-DAG: _Z9function2Pi
+void function2(int * __restrict) {}
+
+// CHECK-DAG: _Z9function3Ri
+void function3(int & __restrict) {}
+
+// CHECK-DAG: _Z8functiopRK5param
+struct param {};
+void functiop(param const &) {}
+
+// CHECK-DAG: _Z8functioqRV5param
+void functioq(param volatile &) {}
+
+// CHECK-DAG: _ZNK5clash8functiotEv
+// CHECK-DAG: _ZNV5clash8functiouEv
+class clash {
+ void functiot() const;
+ void functiou() volatile;
+};
+void clash::functiot() const {}
+void clash::functiou() volatile {}
+
+// CHECK-DAG: _Z8functiowRVKi
+void functiow(int const volatile &){}
+
+// CHECK-DAG: _Z8functiox5paramRKS_
+void functiox(param, param const &) {}
+
+// CHECK-DAG: _Z8functioy5paramRVS_
+void functioy(param, param volatile &) {}
+
+// CHECK-DAG: _Z8functioa5paramS_6param2RKS0_
+class param2 {};
+void functioa(param, param, param2, param2 const &) {}
+
+// CHECK-DAG: _Z8functiob5paramS_6param2RVS0_
+void functiob(param, param, param2, param2 volatile &) {}
+
+// Restrict not part of mangling.
+// CHECK-DAG: _Z8functioz5paramRS_
+void functioz(param, param & __restrict) {}
+
+// CHECK-DAG: _Z8functioc5paramS_6param2RS0_
+void functioc(param, param, param2, param2 & __restrict) {}
+
+// type_qualifier_spacing
+// CHECK-DAG: _Z8functiodPi
+void functiod(int *) {};
+
+// CHECK-DAG: _Z8functioeRi
+void functioe(int &) {};
+
+// CHECK-DAG: _Z8functiofOi
+void functiof(int &&) {};
+
+// mixing_types_with_cv_qualifiers
+// CHECK-DAG: _Z8functiogPKi
+void functiog(int const *) {}
+
+// CHECK-DAG: _Z8functiohPi
+void functioh(int* const) {}
+
+// CHECK-DAG: _Z8functioiPKi
+void functioi(int const* const) {}
+
+// miscellaneous_qualifier_positioning
+// CHECK-DAG: _Z8functiojCf
+void functioj(float _Complex) {}
+
+// rvalue references
+// CHECK-DAG: _Z4foorOi
+void foor(int&&) {}
+
+// CHECK-DAG: _Z4foosOKi
+void foos(int const &&) {}
+
+// CHECK-DAG: _Z4footOVKi
+void foot(int volatile const &&) {}