blob: 3011676021d9d1ad2dfd7fdfc643a660256cc1c9 [file] [log] [blame]
// { dg-do run { target c++17 } }
// { dg-options "-Wno-deprecated" }
// { dg-require-weak "" }
// { dg-additional-sources "inline-var1a.C" }
#include "inline-var1.h"
static inline int var19 = bar (0);
static int inline var20 = bar (1);
extern inline int var23;
inline int var21 = foo (6);
inline int var22 = foo (7);
extern inline int var23, var22;
inline int var23 = foo (8);
static int v, w = 64 + 2;
int
foo (int x)
{
if (x != v++)
__builtin_abort ();
return 36 + x;
}
int
bar (int x)
{
if (v < 6)
__builtin_abort ();
if ((x >> 4) != (w >> 4))
{
if ((x & 15) != 0 || (w & 15) != 2)
__builtin_abort ();
w = x + 1;
}
else if (x != w++)
__builtin_abort ();
return 46 + x;
}
int &ref1 = var1;
int &ref2 = N::var2;
const int &ref3 = S::var3;
int &ref4 = S::var4;
const int &ref5 = S::var5;
const int &ref6 = N::var6;
int &ref7 = var7;
double &ref8 = N::var8;
double &ref9 = S::var9;
const int &ref11 = S::var11;
int &ref12 = var12;
int &ref13 = var13;
int &ref14 = U::var14;
T &ref15 = U::var15;
T &ref16 = U::var16;
int &ref17 = U::var17;
const double &ref18 = U::var18;
int &ref19 = var19;
int &ref20 = var20;
int &ref21 = var21;
int &ref22 = var22;
int &ref23 = var23;
const int &ref24 = Y<int>::var24;
int &ref25 = Y<int>::var25;
int &ref26 = Y<int>::var26;
int &ref27 = var27<int>;
const int &ref28 = Y<int>::var28;
const char &ref24a = Y<char>::var24;
char &ref25a = Y<char>::var25;
int &ref26a = Y<char>::var26;
char &ref27a = var27<char>;
const char &ref28a = Y<char>::var28;
extern int &alt1;
extern int &alt2;
extern const int &alt3;
extern int &alt4;
extern const int &alt5;
extern const int &alt6;
extern int &alt7;
extern double &alt8;
extern double &alt9;
extern const int &alt11;
extern int &alt12;
extern int &alt13;
extern int &alt14;
extern T &alt15;
extern T &alt16;
extern int &alt17;
extern const double &alt18;
extern int &alt19;
extern int &alt20;
extern int &alt21;
extern int &alt22;
extern int &alt23;
extern const int &alt24;
extern int &alt25;
extern int &alt26;
extern int &alt27;
extern const int &alt28;
extern const char &alt24a;
extern char &alt25a;
extern int &alt26a;
extern char &alt27a;
extern const char &alt28a;
int
main ()
{
if (v != 9)
__builtin_abort ();
if (var1 != 4
|| N::var2 != 0
|| S::var3 != 5
|| S::var4 != 6
|| S::var5 != 7
|| N::var6 != 8
|| var7 != 9
|| N::var8 != 2.0
|| S::var9 != 3.0
|| sizeof (N::var10) != 1
|| S::var11 != 11
|| var12 != 36
|| var13 != 37
|| U::var14 != 38
|| U::var15.t != 39
|| U::var16.t != 40
|| U::var17 != 41
|| U::var18 != 4.0
|| var19 != 46
|| var20 != 47
|| var21 != 42
|| var22 != 43
|| var23 != 44
|| Y<int>::var24 != 6
|| Y<int>::var25 != 7
|| Y<int>::var26 != 8
|| var27<int> != 9
|| Y<int>::var28 != 10
|| Y<char>::var24 != 6
|| Y<char>::var25 != 7
|| Y<char>::var26 != 8
|| var27<char> != 9
|| Y<char>::var28 != 10)
__builtin_abort ();
if (ref1 != 4
|| ref2 != 0
|| ref3 != 5
|| ref4 != 6
|| ref5 != 7
|| ref6 != 8
|| ref7 != 9
|| alt7 != 9
|| ref8 != 2.0
|| alt8 != 2.0
|| ref9 != 3.0
|| ref11 != 11
|| ref12 != 36
|| ref13 != 37
|| ref14 != 38
|| ref15.t != 39
|| ref16.t != 40
|| ref17 != 41
|| ref18 != 4.0
|| ref19 != 46
|| alt19 != 62
|| ref20 != 47
|| alt20 != 63
|| ref21 != 42
|| ref22 != 43
|| ref23 != 44
|| ref24 != 6
|| ref25 != 7
|| ref26 != 8
|| ref27 != 9
|| ref28 != 10
|| ref24a != 6
|| ref25a != 7
|| ref26a != 8
|| ref27a != 9
|| ref28a != 10)
__builtin_abort ();
if (&ref1 != &alt1
|| &ref2 != &alt2
|| &ref3 != &alt3
|| &ref4 != &alt4
|| &ref5 != &alt5
|| &ref6 != &alt6
|| &ref7 == &alt7
|| &ref8 == &alt8
|| &ref9 != &alt9
|| &ref11 != &alt11
|| &ref12 != &alt12
|| &ref13 != &alt13
|| &ref14 != &alt14
|| &ref15 != &alt15
|| &ref16 != &alt16
|| &ref17 != &alt17
|| &ref18 != &alt18
|| &ref19 == &alt19
|| &ref20 == &alt20
|| &ref21 != &alt21
|| &ref22 != &alt22
|| &ref23 != &alt23
|| &ref24 != &alt24
|| &ref25 != &alt25
|| &ref26 != &alt26
|| &ref27 != &alt27
|| &ref28 != &alt28
|| &ref24a != &alt24a
|| &ref25a != &alt25a
|| &ref26a != &alt26a
|| &ref27a != &alt27a
|| &ref28a != &alt28a)
__builtin_abort ();
}