brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · b52520e Raw
75 lines · c
1#ifndef STRESS1_COMMON_H2#define STRESS1_COMMON_H3 4inline char function00(char x) { return x + x; }5inline short function00(short x) { return x + x; }6inline int function00(int x) { return x + x; }7 8namespace N01 { struct S00; }9 10namespace N00 {11struct S00 {12  char c;13  short s;14  int i;15 16  S00(char x) : c(x) {}17  S00(short x) : s(x) {}18  S00(int x) : i(x) {}19 20  char method00(char x) { return x + x; }21  short method00(short x) { return x + x; }22  int method00(int x) { return x + x; }23 24  operator char() { return c; }25  operator short() { return s; }26  operator int() { return i; }27};28struct S01 {};29struct S02 {};30template <typename T> struct S03 {31  struct S00 : N00::S00 {};32};33template <int I, template <typename> class U> struct S03<U<int>[I]>34    : U<int>::S00 {35  S03();36  S03(int);37  S03(short);38  S03(char);39  template <typename V = decltype(I)> S03(V);40};41template <> struct S03<S03<int>[42]> : S00 {};42}43 44namespace N01 {45struct S00 : N00::S00 {46  using N00::S00::S00;47};48struct S01 {};49struct S02 {};50}51 52using namespace N00;53 54template <int I, template <typename> class U> template <typename V> S03<U<int>[I]>::S03(V x) : S00(x) {}55template <int I, template <typename> class U> S03<U<int>[I]>::S03() : S00(I) {}56template <int I, template <typename> class U> S03<U<int>[I]>::S03(char x) : S00(x) {}57template <int I, template <typename> class U> S03<U<int>[I]>::S03(short x) : S00(x) {}58template <int I, template <typename> class U> S03<U<int>[I]>::S03(int x) : S00(x) {}59 60#pragma weak pragma_weak0061#pragma weak pragma_weak0162#pragma weak pragma_weak0263#pragma weak pragma_weak0364#pragma weak pragma_weak0465#pragma weak pragma_weak0566 67extern "C" int pragma_weak00();68extern "C" int pragma_weak01();69extern "C" int pragma_weak02();70extern "C" int pragma_weak03;71extern "C" int pragma_weak04;72extern "C" int pragma_weak05;73 74#endif75