Viewing file: pretty2.C (1.05 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// PR c++/6794 // Test whether __PRETTY_FUNCTION__ works in templates, functions and // in initializers at global scope // { dg-do run } // { dg-options "" }
extern "C" void __assert_fail (const char *, const char *, unsigned int, const char *) throw() __attribute__((noreturn)); extern "C" void abort (void); extern "C" void exit (int);
#define str(expr) #expr #define assert(expr) \ ((expr) ? 0 : (__assert_fail (str(expr), __FILE__, __LINE__, \ __PRETTY_FUNCTION__), 0))
int __attribute__((noinline)) foo (void) { return 1; }
template<class T> int bar (T) { return (assert (foo ()), 1); }
template<> int bar<int> (int) { return (assert (foo ()), 2); }
int a = (assert (foo ()), 1); int b = (assert (foo ()), 2);
int main () { double c = 1.0; unsigned char *d = 0; int e = (assert (foo ()), 3);
bar (c); bar (d); bar (e); }
namespace N { int f = (assert (foo ()), 4); }
void __attribute__((noinline)) __assert_fail (const char *cond, const char *file, unsigned int line, const char *pretty) throw () { abort (); }
|