view gcc/testsuite/g++.dg/abi/pr87137.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
line wrap: on
line source

// PR c++/87137

// Empty macro args are undefined in C++ 98
// { dg-do compile { target c++11 } }

// We got confused by non-field decls separating bitfields when
// ms_bitfield_layout was in effect.

#if defined (__x86_64__) || defined (__i686__) || defined (__powerpc__)
#define ATTRIB  __attribute__((ms_struct))
#elif defined (__superh__)
#define ATTRIB __attribute__((renesas))
#else
#define ATTRIB
#endif

#define DEFINE(NAME,BASE,THING)		\
  struct ATTRIB NAME BASE {		\
    unsigned one : 12;			\
    THING				\
    unsigned two : 4;			\
  }

template<unsigned I, unsigned J> struct Test;
template<unsigned I> struct Test<I,I> {};

#define TEST(NAME,BASE,THING)			\
  DEFINE(NAME##_WITH,BASE,THING);		\
  DEFINE(NAME##_WITHOUT,BASE,);			\
  int NAME = sizeof (Test<sizeof(NAME##_WITH),sizeof (NAME##_WITHOUT)>)

TEST(NSFun,,int fun (););
TEST(SFun,,static int fun (););
TEST(Tdef,,typedef int tdef;);

TEST(Var,,static int var;);
struct base { int f; };
TEST(Use,:base,using base::f;);
TEST(Tmpl,,template<unsigned> class X {};);
TEST(TmplFN,,template<unsigned> void fu (););