]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
core: add tree-node comments
authorNathan Sidwell <nathan@acm.org>
Mon, 13 Jul 2020 20:52:03 +0000 (13:52 -0700)
committerNathan Sidwell <nathan@acm.org>
Tue, 14 Jul 2020 13:11:53 +0000 (06:11 -0700)
As we've moved to 64-bit systems, the padding information has become
conditionally inaccurate.  I also hit cases where invalid tree codes
did not get flagged as invalid.

gcc/
* tree-core.h (tree_decl_with_vis, tree_function_decl):
Note additional padding on 64-bits
* tree.c (cache_integer_cst): Note why no caching of enum literals.
(get_tree_code_name): Robustify error case.

gcc/tree-core.h
gcc/tree.c

index 8c5a2e3c4041248d2928c613cf7062b259abf2a4..ba7f9ceb205aaf107ab3294ece86b602699234c2 100644 (file)
@@ -1826,6 +1826,7 @@ struct GTY(()) tree_decl_with_vis {
  /* Belong to FUNCTION_DECL exclusively.  */
  unsigned regdecl_flag : 1;
  /* 14 unused bits. */
+ /* 32 more unused on 64 bit HW. */
 };
 
 struct GTY(()) tree_var_decl {
@@ -1901,6 +1902,7 @@ struct GTY(()) tree_function_decl {
   unsigned replaceable_operator : 1;
 
   /* 11 bits left for future expansion.  */
+  /* 32 bits on 64-bit HW.  */
 };
 
 struct GTY(()) tree_translation_unit_decl {
index 3d9968fd7a01ff942c40df69804b12ab3be09a4f..9102f8d4e543482c52196805dcd512777fdb37bb 100644 (file)
@@ -1771,6 +1771,8 @@ cache_integer_cst (tree t)
       break;
 
     case ENUMERAL_TYPE:
+      /* The slot used by TYPE_CACHED_VALUES is used for the enum
+        members.  */
       break;
 
     default:
@@ -13254,7 +13256,9 @@ get_tree_code_name (enum tree_code code)
 {
   const char *invalid = "<invalid tree code>";
 
-  if (code >= MAX_TREE_CODES)
+  /* The tree_code enum promotes to signed, but we could be getting
+     invalid values, so force an unsigned comparison.  */
+  if (unsigned (code) >= MAX_TREE_CODES)
     {
       if (code == 0xa5a5)
        return "ggc_freed";