Merge branch 'stable-2.0'
[bpt/guile.git] / libguile / tags.h
index a194ea0..4a1b192 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef SCM_TAGS_H
 #define SCM_TAGS_H
 
-/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2008,2009,2010,2011,2012
+/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2008,2009,2010,2011,2012,2013
  * Free Software Foundation, Inc.
  *
  * This library is free software; you can redistribute it and/or
@@ -87,14 +87,15 @@ typedef union SCM { struct { scm_t_bits n; } n; } SCM;
   The 0?: constructions makes sure that the code is never executed,
   and that there is no performance hit.  However, the alternative is
   compiled, and does generate a warning when used with the wrong
-  pointer type.
+  pointer type.  We use a volatile pointer type to avoid warnings
+  from clang.
 
   The Tru64 and ia64-hp-hpux11.23 compilers fail on `case (0?0=0:x)'
   statements, so for them type-checking is disabled.  */
 #if defined __DECC || defined __HP_cc
 #   define SCM_UNPACK(x) ((scm_t_bits) (x))
 #else
-#   define SCM_UNPACK(x) ((scm_t_bits) (0? (*(SCM*)0=(x)): x))
+#   define SCM_UNPACK(x) ((scm_t_bits) (0? (*(volatile SCM *)0=(x)): x))
 #endif
 
 /*
@@ -401,6 +402,9 @@ typedef union SCM { struct { scm_t_bits n; } n; } SCM;
 #define SCM_HAS_TYP7(x, tag)    (SCM_HAS_HEAP_TYPE (x, SCM_TYP7, tag))
 #define SCM_HAS_TYP7S(x, tag)   (SCM_HAS_HEAP_TYPE (x, SCM_TYP7S, tag))
 
+/* If you change these numbers, change them also in (system vm
+   assembler).  */
+
 #define scm_tc7_symbol         5
 #define scm_tc7_variable        7
 
@@ -419,14 +423,14 @@ typedef union SCM { struct { scm_t_bits n; } n; } SCM;
 #define scm_tc7_dynamic_state  45
 
 #define scm_tc7_frame          47
-#define scm_tc7_objcode                53
-#define scm_tc7_vm             55
+#define scm_tc7_unused_53      53
+#define scm_tc7_unused_55      55
 #define scm_tc7_vm_cont                71
 
 #define scm_tc7_unused_17      61
 #define scm_tc7_unused_21      63
-#define scm_tc7_unused_19      69
-#define scm_tc7_program                79
+#define scm_tc7_program                69
+#define scm_tc7_unused_79      79
 #define scm_tc7_weak_set       85
 #define scm_tc7_weak_table     87
 #define scm_tc7_array          93