// RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-pc-win32 | FileCheck %s
void
// CHECK: "?a1@@YAXXZ"
int
// CHECK: "?a2@@YAHXZ"
const int
// CHECK: "?a3@@YA?BHXZ"
volatile int
// CHECK: "?a4@@YA?CHXZ"
const volatile int
// CHECK: "?a5@@YA?DHXZ"
float
// CHECK: "?a6@@YAMXZ"
int *
// CHECK: "?b1@@YAPAHXZ"
const char *
// CHECK: "?b2@@YAPBDXZ"
float *
// CHECK: "?b3@@YAPAMXZ"
const float *
// CHECK: "?b4@@YAPBMXZ"
volatile float *
// CHECK: "?b5@@YAPCMXZ"
const volatile float *
// CHECK: "?b6@@YAPDMXZ"
float &
// CHECK: "?b7@@YAAAMXZ"
const float &
// CHECK: "?b8@@YAABMXZ"
volatile float &
// CHECK: "?b9@@YAACMXZ"
const volatile float &
// CHECK: "?b10@@YAADMXZ"
const char**
// CHECK: "?b11@@YAPAPBDXZ"
;
A
// CHECK: "?c1@@YA?AVA@@XZ"
const A
// CHECK: "?c2@@YA?BVA@@XZ"
volatile A
// CHECK: "?c3@@YA?CVA@@XZ"
const volatile A
// CHECK: "?c4@@YA?DVA@@XZ"
const A*
// CHECK: "?c5@@YAPBVA@@XZ"
volatile A*
// CHECK: "?c6@@YAPCVA@@XZ"
const volatile A*
// CHECK: "?c7@@YAPDVA@@XZ"
A &
// CHECK: "?c8@@YAAAVA@@XZ"
const A &
// CHECK: "?c9@@YAABVA@@XZ"
volatile A &
// CHECK: "?c10@@YAACVA@@XZ"
const volatile A &
// CHECK: "?c11@@YAADVA@@XZ"
;
B<int>
// CHECK: "?d1@@YA?AV?$B@H@@XZ"
B<const char*>
// CHECK: "?d2@@YA?AV?$B@PBD@@XZ"
B<A>
// CHECK: "?d3@@YA?AV?$B@VA@@@@XZ"
B<A>*
// CHECK: "?d4@@YAPAV?$B@VA@@@@XZ"
const B<A>*
// CHECK: "?d5@@YAPBV?$B@VA@@@@XZ"
volatile B<A>*
// CHECK: "?d6@@YAPCV?$B@VA@@@@XZ"
const volatile B<A>*
// CHECK: "?d7@@YAPDV?$B@VA@@@@XZ"
B<A>&
// CHECK: "?d8@@YAAAV?$B@VA@@@@XZ"
const B<A>&
// CHECK: "?d9@@YAABV?$B@VA@@@@XZ"
volatile B<A>&
// CHECK: "?d10@@YAACV?$B@VA@@@@XZ"
const volatile B<A>&
// CHECK: "?d11@@YAADV?$B@VA@@@@XZ"
;
Enum
// CHECK: "?e1@@YA?AW4Enum@@XZ"
const Enum
// CHECK: "?e2@@YA?BW4Enum@@XZ"
Enum*
// CHECK: "?e3@@YAPAW4Enum@@XZ"
Enum&
// CHECK: "?e4@@YAAAW4Enum@@XZ"
;
// CHECK: "?f1@@YA?AUS@@XZ"
const
// CHECK: "?f2@@YA?BUS@@XZ"
// CHECK: "?f3@@YAPAUS@@XZ"
const
// CHECK: "?f4@@YAPBUS@@XZ"
const volatile
// CHECK: "?f5@@YAPDUS@@XZ"
// CHECK: "?f6@@YAAAUS@@XZ"
// CHECK: "?f7@@YAQAUS@@XZ"
int S::*
// CHECK: "?f8@@YAPQS@@HXZ"
int S::* const
// CHECK: "?f9@@YAQQS@@HXZ"
int S::* __restrict
// CHECK: "?f10@@YAPIQS@@HXZ"
int S::* const __restrict
// CHECK: "?f11@@YAQIQS@@HXZ"
typedef int ;
function_pointer
// CHECK: "?g1@@YAP6AHH@ZXZ"
const function_pointer
// CHECK: "?g2@@YAQ6AHH@ZXZ"
function_pointer*
// CHECK: "?g3@@YAPAP6AHH@ZXZ"
const function_pointer*
// CHECK: "?g4@@YAPBQ6AHH@ZXZ"
extern int &z;
int & __restrict
// CHECK: "?h1@@YAAIAHXZ"