blob: 5dcbe3be2934aa60e4ffe873de5ee8e94d6b1d54 [file] [log] [blame]
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// 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 &&) {}