mangle.c (java_mangle_decl): Re-sync with lhd_set_decl_assembler_name.
authorRichard Biener <rguenther@suse.de>
Fri, 26 Aug 2016 10:59:50 +0000 (10:59 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 26 Aug 2016 10:59:50 +0000 (10:59 +0000)
2016-08-26  Richard Biener  <rguenther@suse.de>

java/
* mangle.c (java_mangle_decl): Re-sync with lhd_set_decl_assembler_name.

From-SVN: r239774

gcc/java/ChangeLog
gcc/java/mangle.c

index ba2ab906312d96884d2be017a59b911e5ae6a74e..74c5be8cc5d65b07ca9e44095883b0ca85b8bc20 100644 (file)
@@ -1,3 +1,8 @@
+2016-08-26  Richard Biener  <rguenther@suse.de>
+
+       java/
+       * mangle.c (java_mangle_decl): Re-sync with lhd_set_decl_assembler_name.
+
 2016-08-12  Marek Polacek  <polacek@redhat.com>
 
        PR c/7652
index 6c33396c3420f765a93aa28edc0c65abab82f96c..d61fc028ae0e54b98c577c8cc48ee4107ebf89c6 100644 (file)
@@ -74,15 +74,23 @@ static GTY(()) tree atms;
 void
 java_mangle_decl (tree decl)
 {
-  /* A copy of the check from the beginning of lhd_set_decl_assembler_name.
-     Only FUNCTION_DECLs and VAR_DECLs for variables with static storage
-     duration need a real DECL_ASSEMBLER_NAME.  */
+  /* A copy of the check from the beginning of lhd_set_decl_assembler_name.  */
+
+  /* set_decl_assembler_name may be called on TYPE_DECL to record ODR
+     name for C++ types.  By default types have no ODR names.  */
+  if (TREE_CODE (decl) == TYPE_DECL)
+    return;
+
+  /* The language-independent code should never use the
+     DECL_ASSEMBLER_NAME for lots of DECLs.  Only FUNCTION_DECLs and
+     VAR_DECLs for variables with static storage duration need a real
+     DECL_ASSEMBLER_NAME.  */
   gcc_assert (TREE_CODE (decl) == FUNCTION_DECL
              || (TREE_CODE (decl) == VAR_DECL
                  && (TREE_STATIC (decl)
                      || DECL_EXTERNAL (decl)
                      || TREE_PUBLIC (decl))));
-  
+
   /* Mangling only applies to class members.  */
   if (DECL_CONTEXT (decl) && TYPE_P (DECL_CONTEXT (decl)))
     {