aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2017-06-29 14:00:44 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2017-06-29 14:00:44 +0000
commitf76b422479df586a93a0a2eaac748b59923d6e97 (patch)
tree8205b4adb2b1004bef7560b116c2256cdcd06320 /gcc
parentf66459c1605ab66390ad5b5c54e425f96607d9eb (diff)
downloadgcc-f76b422479df586a93a0a2eaac748b59923d6e97.zip
gcc-f76b422479df586a93a0a2eaac748b59923d6e97.tar.gz
gcc-f76b422479df586a93a0a2eaac748b59923d6e97.tar.bz2
builtins.c (fold_builtin_FUNCTION): Use lang_hooks.decl_printable_name.
gcc/ * builtins.c (fold_builtin_FUNCTION): Use lang_hooks.decl_printable_name. gcc/cp/ * g++.dg/cpp1y/builtin_FUNCTION.C: New. From-SVN: r249784
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/builtins.c9
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/builtin_FUNCTION.C42
4 files changed, 55 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c11b478..f230dad 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-06-29 Nathan Sidwell <nathan@acm.org>
+
+ * builtins.c (fold_builtin_FUNCTION): Use
+ lang_hooks.decl_printable_name.
+
2017-06-29 Peter Bergner <bergner@vnet.ibm.com>
PR middle-end/81194
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 7e829ef..034ec2e 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -8739,13 +8739,12 @@ fold_builtin_FILE (location_t loc)
static inline tree
fold_builtin_FUNCTION ()
{
+ const char *name = "";
+
if (current_function_decl)
- {
- const char *name = IDENTIFIER_POINTER (DECL_NAME (current_function_decl));
- return build_string_literal (strlen (name) + 1, name);
- }
+ name = lang_hooks.decl_printable_name (current_function_decl, 0);
- return build_string_literal (1, "");
+ return build_string_literal (strlen (name) + 1, name);
}
/* Fold a call to __builtin_LINE to an integer constant. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2f0b29b..70651d5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2017-06-29 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/cpp1y/builtin_FUNCTION.C: New.
+
2017-06-29 Peter Bergner <bergner@vnet.ibm.com>
PR middle-end/81194
diff --git a/gcc/testsuite/g++.dg/cpp1y/builtin_FUNCTION.C b/gcc/testsuite/g++.dg/cpp1y/builtin_FUNCTION.C
new file mode 100644
index 0000000..680ba63
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/builtin_FUNCTION.C
@@ -0,0 +1,42 @@
+// { dg-do run }
+
+#include <string.h>
+
+const char *ct, *dt, *cv;
+
+struct KLASS
+{
+ KLASS () ;
+ ~KLASS ();
+ operator int ();
+};
+
+KLASS::KLASS()
+{
+ ct = __builtin_FUNCTION ();
+}
+
+KLASS::~KLASS ()
+{
+ dt = __builtin_FUNCTION ();
+}
+
+KLASS::operator int ()
+{
+ cv = __builtin_FUNCTION ();
+ return 0;
+}
+
+int main ()
+{
+ int q = int (KLASS ());
+
+ if (strcmp (ct, "KLASS"))
+ return 1;
+ if (strcmp (dt, "~KLASS"))
+ return 2;
+ if (strcmp (cv, "operator int"))
+ return 3;
+
+ return 0;
+}