1// PR debug/54508 2// { dg-do compile } 3// { dg-options "-g2 -dA -fno-merge-debug-strings" } 4 5// { dg-final { scan-assembler "\"cbase\\\\0\"\[ \t\]+\[#;/!|@\]+ +DW_AT_name" } } 6// { dg-final { scan-assembler "\"OPCODE\\\\0\"\[ \t\]+\[#;/!|@\]+ +DW_AT_name" } } 7// { dg-final { scan-assembler "\"bi\\\\0\"\[ \t\]+\[#;/!|@\]+ +DW_AT_name" } } 8// { dg-final { scan-assembler "\"si\\\\0\"\[ \t\]+\[#;/!|@\]+ +DW_AT_name" } } 9// { dg-final { scan-assembler "\"f1\\\\0\"\[ \t\]+\[#;/!|@\]+ +DW_AT_name" } } 10// { dg-final { scan-assembler "\"f2\\\\0\"\[ \t\]+\[#;/!|@\]+ +DW_AT_name" } } 11// { dg-final { scan-assembler-not "\"nc\\\\0\"\[ \t\]+\# +DW_AT_name" } } 12 13class cbase 14 15{ 16public: 17 static int si; 18 int bi; 19}; 20 21class c : public cbase 22 23{ 24public: 25 enum 26 { 27 OPCODE = 251 28 }; 29 int i ; 30 static const char *testc (void) { return "foo"; } 31}; 32 33struct s 34{ 35 int f1; 36 static const char *tests (void) { return "test"; } 37}; 38 39union u 40{ 41 int f2; 42 double d; 43 static const char *testu (void) { return "test union"; } 44}; 45 46namespace n 47{ 48 const char *ntest (void) { return "test n"; } 49 50 class nc 51 { 52 public: 53 int i; 54 static int sj; 55 }; 56} 57 58extern void send (int, int, const void *, int); 59 60void test (int src) 61{ 62 int cookie = 1; 63 send(src, c::OPCODE, c::testc (), cookie); 64 send(src, c::OPCODE, s::tests (), cookie); 65 send(src, c::OPCODE, u::testu (), cookie); 66 send(src, c::OPCODE, n::ntest (), cookie); 67} 68