+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
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. */
+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
--- /dev/null
+// { 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;
+}