aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/ext/fnname3.C
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
committerBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
commit1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch)
treec607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/gcc/testsuite/g++.dg/ext/fnname3.C
parent283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff)
downloadtoolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/ext/fnname3.C')
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ext/fnname3.C65
1 files changed, 65 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/fnname3.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/fnname3.C
new file mode 100644
index 000000000..c29170a9a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/fnname3.C
@@ -0,0 +1,65 @@
+// Test whether __func__ works for constructors and destructors.
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Matt Austern <austern@apple.com>, 3 Aug 2003
+// { dg-do run }
+
+struct uk9i
+{
+ uk9i();
+ ~uk9i();
+
+ static const char* fname;
+ static bool obj_exists;
+};
+
+uk9i::uk9i()
+{
+ obj_exists = true;
+ fname = __func__;
+}
+
+uk9i::~uk9i()
+{
+ obj_exists = false;
+ fname = __func__;
+}
+
+const char* uk9i::fname = 0;
+bool uk9i::obj_exists = false;
+
+int main()
+{
+ bool ok = true;
+
+ ok = ok && uk9i::fname == 0;
+ ok = ok && !uk9i::obj_exists;
+
+ {
+ uk9i tmp;
+ ok = ok && uk9i::obj_exists;
+ ok = ok && uk9i::fname != 0;
+ if (ok)
+ {
+ ok = ok && uk9i::fname[0] == 'u';
+ ok = ok && uk9i::fname[1] == 'k';
+ ok = ok && uk9i::fname[2] == '9';
+ ok = ok && uk9i::fname[3] == 'i';
+ ok = ok && uk9i::fname[4] == '\0';
+ }
+ }
+
+ ok = ok && !uk9i::obj_exists;
+ ok = ok && uk9i::fname != 0;
+ if (ok)
+ {
+ ok = ok && uk9i::fname[0] == '~';
+ ok = ok && uk9i::fname[1] == 'u';
+ ok = ok && uk9i::fname[2] == 'k';
+ ok = ok && uk9i::fname[3] == '9';
+ ok = ok && uk9i::fname[4] == 'i';
+ ok = ok && uk9i::fname[5] == '\0';
+ }
+
+ return ok ? 0 : 1;
+}