]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c-common.c (c_expand_expr): Fix prototype.
authorNeil Booth <neil@daikokuya.demon.co.uk>
Wed, 27 Mar 2002 18:28:06 +0000 (18:28 +0000)
committerNeil Booth <neil@gcc.gnu.org>
Wed, 27 Mar 2002 18:28:06 +0000 (18:28 +0000)
* c-common.c (c_expand_expr): Fix prototype.
* c-common.h (c_expand_expr): Always declare, update.
* c-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
* c-objc-common.c (c_objc_common_init): No global hook.
* expr.c (expand_expr): Use langhook.
* expr.h (enum expand_modifier): Conditionally declare.
* langhooks-def.h (lhd_expand_expr, LANG_HOOKS_EXPAND_EXPR): New.
(LANG_HOOKS_INITIALIZER): Update.
* langhooks.c (lhd_expand_expr): New.
* langhooks.h (struct lang_hooks): New hook.
* toplev.c (lang_expand_expr_t, lang_expand_expr): Delete.
(lang_independent_init): Don't default hook.
ada:
* misc.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
(gnat_init): Don't set hook.
(gnat_expand_expr): Fix prototype.
cp:
* cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
* cp-tree.h (init_cplus_expand): Remove.
(cxx_expand_expr): New.
* expr.c (cplus_expand_expr): Rename cxx_expand_expr,
fix prototype.
(init_cplus_expand): Remove.
* lex.c (cxx_init): Don't call init_cplus_expand.
java:
* expr.c (java_lang_expand_expr): Rename java_expand_expr,
fix prototype.
* java-tree.h (java_lang_expand_expr): Similarly.
* lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
(java_init): Don't set hook.
objc:
* objc-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.

From-SVN: r51462

22 files changed:
gcc/ChangeLog
gcc/ada/ChangeLog
gcc/ada/misc.c
gcc/c-common.c
gcc/c-common.h
gcc/c-lang.c
gcc/c-objc-common.c
gcc/cp/ChangeLog
gcc/cp/cp-lang.c
gcc/cp/cp-tree.h
gcc/cp/expr.c
gcc/cp/lex.c
gcc/expr.c
gcc/java/ChangeLog
gcc/java/expr.c
gcc/java/java-tree.h
gcc/java/lang.c
gcc/langhooks-def.h
gcc/langhooks.c
gcc/langhooks.h
gcc/objc/objc-lang.c
gcc/toplev.c

index 79b9d5020431bd12d555361edd9d7c047bc62022..f6a7aef5cfc7f695e4974ad30400953ca5ddc6cc 100644 (file)
@@ -1,3 +1,20 @@
+2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+       * c-common.c (c_expand_expr): Fix prototype.
+       * c-common.h (c_expand_expr): Always declare, update.
+       * c-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
+       * c-objc-common.c (c_objc_common_init): No global hook.
+       * expr.c (expand_expr): Use langhook.
+       * expr.h (enum expand_modifier): Conditionally declare.
+       * langhooks-def.h (lhd_expand_expr, LANG_HOOKS_EXPAND_EXPR): New.
+       (LANG_HOOKS_INITIALIZER): Update.
+       * langhooks.c (lhd_expand_expr): New.
+       * langhooks.h (struct lang_hooks): New hook.
+       * toplev.c (lang_expand_expr_t, lang_expand_expr): Delete.
+       (lang_independent_init): Don't default hook.
+objc:
+       * objc-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
+
 2002-03-27  Richard Henderson  <rth@redhat.com>
 
        PR target/6054
index 4a47514ee25f9ffe19652b0e1090c5975a82f7ef..03f747711e92e58572b4465448be6eec7f8f8a95 100644 (file)
@@ -1,3 +1,9 @@
+2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+       * misc.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
+       (gnat_init): Don't set hook.
+       (gnat_expand_expr): Fix prototype.
+
 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * misc.c (ggc_p): Remove.
index bcd9deedef918d404c60878b9c63bca45ebea723..5a2c68ae4709e3d87c07b8c8f8ba82f7b08f1bb9 100644 (file)
@@ -108,6 +108,8 @@ static void gnat_mark_tree          PARAMS ((tree));
 #define LANG_HOOKS_HONOR_READONLY      1
 #undef LANG_HOOKS_GET_ALIAS_SET
 #define LANG_HOOKS_GET_ALIAS_SET       gnat_get_alias_set
+#undef LANG_HOOKS_EXPAND_EXPR
+#define LANG_HOOKS_EXPAND_EXPR         gnat_expand_expr
 #undef LANG_HOOKS_PRINT_DECL
 #define LANG_HOOKS_PRINT_DECL          gnat_print_decl
 #undef LANG_HOOKS_PRINT_TYPE
@@ -163,7 +165,7 @@ extern char **gnat_argv;
 
 static void internal_error_function    PARAMS ((const char *, va_list *));
 static rtx gnat_expand_expr            PARAMS ((tree, rtx, enum machine_mode,
-                                                enum expand_modifier));
+                                                int));
 static void gnat_adjust_rli            PARAMS ((record_layout_info));
 \f
 /* Declare functions we use as part of startup.  */
@@ -358,8 +360,6 @@ gnat_init (filename)
      Define the additional tree codes here.  This isn't the best place to put
      it, but it's where g++ does it.  */
 
-  lang_expand_expr = gnat_expand_expr;
-
   gnat_init_decl_processing ();
 
   /* Add the input filename as the last argument.  */
@@ -503,7 +503,7 @@ gnat_expand_expr (exp, target, tmode, modifier)
      tree exp;
      rtx target;
      enum machine_mode tmode;
-     enum expand_modifier modifier;
+     int modifier;  /* Actually an enum expand_modifier.  */
 {
   tree type = TREE_TYPE (exp);
   tree new;
index 0d5e1e810c59d8ecb631dd6b288436ecbcf5c1f9..f699c86ca390996cac435970aa5207c75a5c158b 100644 (file)
@@ -3588,7 +3588,7 @@ c_expand_expr (exp, target, tmode, modifier)
      tree exp;
      rtx target;
      enum machine_mode tmode;
-     enum expand_modifier modifier;
+     int modifier;  /* Actually enum_modifier.  */
 {
   switch (TREE_CODE (exp))
     {
index 3bd5ba0154766af2df90f7232e7069d2f3ea2d97..7b11f70779ac671071e24f5ea8d25d3f87d5dbde 100644 (file)
@@ -842,12 +842,9 @@ extern tree finish_label_address_expr              PARAMS ((tree));
    different implementations.  Used in c-common.c.  */
 extern tree lookup_label                       PARAMS ((tree));
 
-/* enum expand_modified is in expr.h, as is the macro below.  */
-
-#ifdef QUEUED_VAR
-extern rtx c_expand_expr            PARAMS ((tree, rtx, enum machine_mode,
-                                            enum expand_modifier));
-#endif
+extern rtx c_expand_expr                       PARAMS ((tree, rtx,
+                                                        enum machine_mode,
+                                                        int));
 
 extern int c_safe_from_p                        PARAMS ((rtx, tree));
 
index 5bdd743d967599d803d3feecd7411115cfa25399..a41730cff7bbf207660a8f93e57d4ca6a19894fd 100644 (file)
@@ -52,6 +52,8 @@ static void c_post_options PARAMS ((void));
 #define LANG_HOOKS_SAFE_FROM_P c_safe_from_p
 #undef LANG_HOOKS_MARK_TREE
 #define LANG_HOOKS_MARK_TREE c_mark_tree
+#undef LANG_HOOKS_EXPAND_EXPR
+#define LANG_HOOKS_EXPAND_EXPR c_expand_expr
 #undef LANG_HOOKS_PARSE_FILE
 #define LANG_HOOKS_PARSE_FILE c_common_parse_file
 #undef LANG_HOOKS_STATICP
index 62fd84955b388d2cb38424dd5734920b5dc2430a..416a31042f377721d24c4a2e7f39c5019cefc506 100644 (file)
@@ -225,7 +225,6 @@ c_objc_common_init (filename)
   save_lang_status = &push_c_function_context;
   restore_lang_status = &pop_c_function_context;
   mark_lang_status = &mark_c_function_context;
-  lang_expand_expr = c_expand_expr;
   lang_expand_decl_stmt = c_expand_decl_stmt;
 
   /* These were not defined in the Objective-C front end, but I'm
index e82644cd99caf3b17dff6558a602046e0ac08ebb..a9b75a9a83e6c2b87ff9eef1353af8645e931d32 100644 (file)
@@ -1,3 +1,13 @@
+2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+       * cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
+       * cp-tree.h (init_cplus_expand): Remove.
+       (cxx_expand_expr): New.
+       * expr.c (cplus_expand_expr): Rename cxx_expand_expr,
+       fix prototype.
+       (init_cplus_expand): Remove.
+       * lex.c (cxx_init): Don't call init_cplus_expand.
+
 2002-03-26  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/4884.
index f198b5ec02656bee2834f49b5470a8535a5dd012..fd6c29f02dcca4abb8b10142f5fb00ea99971af5 100644 (file)
@@ -49,6 +49,8 @@ static bool ok_to_generate_alias_set_for_type PARAMS ((tree));
 #define LANG_HOOKS_GET_ALIAS_SET cxx_get_alias_set
 #undef LANG_HOOKS_EXPAND_CONSTANT
 #define LANG_HOOKS_EXPAND_CONSTANT cplus_expand_constant
+#undef LANG_HOOKS_EXPAND_EXPR
+#define LANG_HOOKS_EXPAND_EXPR cxx_expand_expr
 #undef LANG_HOOKS_SAFE_FROM_P
 #define LANG_HOOKS_SAFE_FROM_P c_safe_from_p
 #undef LANG_HOOKS_PARSE_FILE
index 783d38246862f422c861475803225d477ee682a5..99cde0f8f3e93bf84721d491dbb497c70c475fbe 100644 (file)
@@ -3907,8 +3907,10 @@ extern void check_handlers                       PARAMS ((tree));
 extern void choose_personality_routine         PARAMS ((enum languages));
 
 /* in expr.c */
-extern void init_cplus_expand                  PARAMS ((void));
 extern int extract_init                                PARAMS ((tree, tree));
+extern rtx cxx_expand_expr                     PARAMS ((tree, rtx,
+                                                        enum machine_mode,
+                                                        int));
 extern tree cplus_expand_constant               PARAMS ((tree));
 
 /* friend.c */
index 34f779ebb97fcd3e9137b065ba5dac1dfdcba9cf..1bb3869ecb497bd2e0873183c51297ebf13bab6b 100644 (file)
@@ -32,9 +32,6 @@ Boston, MA 02111-1307, USA.  */
 #include "except.h"
 #include "tm_p.h"
 
-static rtx cplus_expand_expr PARAMS ((tree, rtx, enum machine_mode,
-                                   enum expand_modifier));
-
 /* Hook used by output_constant to expand language-specific
    constants.  */
 
@@ -79,12 +76,12 @@ cplus_expand_constant (cst)
 
 /* Hook used by expand_expr to expand language-specific tree codes.  */
 
-static rtx
-cplus_expand_expr (exp, target, tmode, modifier)
+rtx
+cxx_expand_expr (exp, target, tmode, modifier)
      tree exp;
      rtx target;
      enum machine_mode tmode;
-     enum expand_modifier modifier;
+     int modifier;  /* Actually an enum expand_modifier.  */
 {
   tree type = TREE_TYPE (exp);
   register enum machine_mode mode = TYPE_MODE (type);
@@ -131,12 +128,6 @@ cplus_expand_expr (exp, target, tmode, modifier)
   return NULL;
 }
 
-void
-init_cplus_expand ()
-{
-  lang_expand_expr = cplus_expand_expr;
-}
-
 int
 extract_init (decl, init)
      tree decl ATTRIBUTE_UNUSED, init ATTRIBUTE_UNUSED;
index f0c6389935d869f1c8c8c4b25250700193bfc4ac..f67ea2985688b666d0c3cd22f4b390c1782ad4f2 100644 (file)
@@ -647,7 +647,6 @@ cxx_init (filename)
   init_reswords ();
   init_spew ();
   init_tree ();
-  init_cplus_expand ();
   init_cp_semantics ();
 
   lang_unsafe_for_reeval = c_unsafe_for_reeval;
index bc8b6a94a765c7d8b2ea064fc62c39f7a68d9454..e83e1078bc463706de1367dc4c033843c4ec682c 100644 (file)
@@ -7240,7 +7240,8 @@ expand_expr (exp, target, tmode, modifier)
         {
          if (DECL_BUILT_IN_CLASS (TREE_OPERAND (TREE_OPERAND (exp, 0), 0))
              == BUILT_IN_FRONTEND)
-           return (*lang_expand_expr) (exp, original_target, tmode, modifier);
+           return (*lang_hooks.expand_expr)
+             (exp, original_target, tmode, modifier);
          else
            return expand_builtin (exp, target, subtarget, tmode, ignore);
        }
@@ -8800,7 +8801,7 @@ expand_expr (exp, target, tmode, modifier)
       abort ();
 
     default:
-      return (*lang_expand_expr) (exp, original_target, tmode, modifier);
+      return (*lang_hooks.expand_expr) (exp, original_target, tmode, modifier);
     }
 
   /* Here to do an ordinary binary operator, generating an instruction
index 8fc8e7b1b0454a27feb9084c162c22d7ff01f14f..58cf198e3da238cd90bf5444cd97fe1155922032 100644 (file)
@@ -1,3 +1,11 @@
+2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+       * expr.c (java_lang_expand_expr): Rename java_expand_expr,
+       fix prototype.
+       * java-tree.h (java_lang_expand_expr): Similarly.
+       * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
+       (java_init): Don't set hook.
+
 2002-03-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
 
        Fix for PR java/5850:
index a1ec3320e2aac8f644d35096caa0599231093409..a25140463f3b07196515734d88dc5d383dc7fdc1 100644 (file)
@@ -2480,11 +2480,11 @@ get_primitive_array_vtable (tree elt)
 }
 
 struct rtx_def *
-java_lang_expand_expr (exp, target, tmode, modifier)
+java_expand_expr (exp, target, tmode, modifier)
      register tree exp;
      rtx target;
      enum machine_mode tmode;
-     enum expand_modifier modifier;
+     int modifier; /* Actually an enum expand_modifier.  */
 {
   tree current;
 
index de7b1025152bfeae8dd63f90e2b8a3b8861309fa..cf272fd6320f3e6b412416f1ae3e19ec93600905 100644 (file)
@@ -1247,12 +1247,10 @@ extern void append_gpp_mangled_name PARAMS ((const char *, int));
 extern void add_predefined_file PARAMS ((tree));
 extern int predefined_filename_p PARAMS ((tree));
 
-/* We use ARGS_SIZE_RTX to indicate that gcc/expr.h has been included
-   to declare `enum expand_modifier'. */
-#if defined (TREE_CODE) && defined(RTX_CODE) && defined (HAVE_MACHINE_MODES) && defined (ARGS_SIZE_RTX)
-struct rtx_def * java_lang_expand_expr PARAMS ((tree, rtx, enum machine_mode,
-                                              enum expand_modifier)); 
-#endif /* TREE_CODE && RTX_CODE && HAVE_MACHINE_MODES && ARGS_SIZE_RTX */
+#if defined(RTX_CODE) && defined (HAVE_MACHINE_MODES)
+struct rtx_def * java_expand_expr PARAMS ((tree, rtx, enum machine_mode,
+                                          int)); 
+#endif
 
 #define DECL_FINAL(DECL) DECL_LANG_FLAG_3 (DECL)
 
index 99a5e20037cc4e80c15ec8bd8a7ffe8e007f8865..56f16195a0dbe8e29120edc14cfed3c5e14803c9 100644 (file)
@@ -225,6 +225,8 @@ static int dependency_tracking = 0;
 #define LANG_HOOKS_PARSE_FILE java_parse_file
 #undef LANG_HOOKS_MARK_TREE
 #define LANG_HOOKS_MARK_TREE java_mark_tree
+#undef LANG_HOOKS_EXPAND_EXPR
+#define LANG_HOOKS_EXPAND_EXPR java_expand_expr
 #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
 #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL java_dup_lang_specific_decl
 #undef LANG_HOOKS_DECL_PRINTABLE_NAME
@@ -511,7 +513,6 @@ java_init (filename)
   jcf_path_seal (version_flag);
 
   print_error_function = lang_print_error;
-  lang_expand_expr = java_lang_expand_expr;
 
   java_init_decl_processing ();
 
index 57c792be959a0bd72b16d2ddeed15b08b7395452..974f86253607283a1d37f6c479e826aa5f7bc29c 100644 (file)
@@ -49,6 +49,7 @@ extern void lhd_clear_binding_stack PARAMS ((void));
 extern void lhd_print_tree_nothing PARAMS ((FILE *, tree, int));
 extern const char *lhd_decl_printable_name PARAMS ((tree, int));
 extern void lhd_set_yydebug PARAMS ((int));
+extern rtx lhd_expand_expr PARAMS ((tree, rtx, enum machine_mode, int));
 
 /* Declarations of default tree inlining hooks.  */
 tree lhd_tree_inlining_walk_subtrees           PARAMS ((tree *, int *,
@@ -78,6 +79,7 @@ tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree));
 #define LANG_HOOKS_POST_OPTIONS                lhd_do_nothing
 #define LANG_HOOKS_GET_ALIAS_SET       lhd_get_alias_set
 #define LANG_HOOKS_EXPAND_CONSTANT     lhd_return_tree
+#define LANG_HOOKS_EXPAND_EXPR         lhd_expand_expr
 #define LANG_HOOKS_SAFE_FROM_P         lhd_safe_from_p
 #define LANG_HOOKS_STATICP             lhd_staticp
 #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL lhd_do_nothing_t
@@ -174,6 +176,7 @@ int lhd_tree_dump_type_quals                        PARAMS ((tree));
   LANG_HOOKS_CLEAR_BINDING_STACK, \
   LANG_HOOKS_GET_ALIAS_SET, \
   LANG_HOOKS_EXPAND_CONSTANT, \
+  LANG_HOOKS_EXPAND_EXPR, \
   LANG_HOOKS_SAFE_FROM_P, \
   LANG_HOOKS_STATICP, \
   LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, \
index 4bbcd5e148f9a8d89f4d3a947ea05bc29934f852..ec538b8c14d3173923a82840707f7a69a7a663e7 100644 (file)
@@ -143,6 +143,18 @@ hook_get_alias_set_0 (t)
   return 0;
 }
 
+/* This is the default expand_expr function.  */
+
+rtx
+lhd_expand_expr (t, r, mm, em)
+     tree t ATTRIBUTE_UNUSED;
+     rtx r ATTRIBUTE_UNUSED;
+     enum machine_mode mm ATTRIBUTE_UNUSED;
+     int em ATTRIBUTE_UNUSED;
+{
+  abort ();
+}
+
 /* This is the default decl_printable_name function.  */
 
 const char *
index 73a7628a1d533b49054ade810b9feb93d5c65327..332ede8d32fa5d373ea9f67874de9f984305e03a 100644 (file)
@@ -21,6 +21,8 @@ Boston, MA 02111-1307, USA.  */
 #ifndef GCC_LANG_HOOKS_H
 #define GCC_LANG_HOOKS_H
 
+/* This file should be #include-d after tree.h.  */
+
 /* A print hook for print_tree ().  */
 typedef void (*lang_print_tree_hook) PARAMS ((FILE *, tree, int indent));
 
@@ -159,6 +161,10 @@ struct lang_hooks
      constant equivalent to its input.  */
   tree (*expand_constant) PARAMS ((tree));
 
+  /* Called by expand_expr for language-specific tree codes.
+     Fourth argument is actually an enum expand_modifier.  */
+  rtx (*expand_expr) PARAMS ((tree, rtx, enum machine_mode, int));
+
   /* Hook called by safe_from_p for language-specific tree codes.  It is
      up to the language front-end to install a hook if it has any such
      codes that safe_from_p needs to know about.  Since same_from_p will
index aa22ea316a3f8d623c53ae0d8f32061bfa41ac5f..702bbad632a550e302f98f8ae7a113f6620302f7 100644 (file)
@@ -48,6 +48,8 @@ static void objc_post_options                   PARAMS ((void));
 #define LANG_HOOKS_PARSE_FILE c_common_parse_file
 #undef LANG_HOOKS_MARK_TREE
 #define LANG_HOOKS_MARK_TREE c_mark_tree
+#undef LANG_HOOKS_EXPAND_EXPR
+#define LANG_HOOKS_EXPAND_EXPR c_expand_expr
 #undef LANG_HOOKS_STATICP
 #define LANG_HOOKS_STATICP c_staticp
 #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
index ed946ef32efe1d952ae3a7104ee44aad0f89aecf..86d4d60762334b1a6c44d31c98d5175d080b52ce 100644 (file)
@@ -349,14 +349,6 @@ tree current_function_decl;
    if none.  */
 tree current_function_func_begin_label;
 
-/* Pointer to function to compute rtl for a language-specific tree code.  */
-
-typedef rtx (*lang_expand_expr_t)
-  PARAMS ((union tree_node *, rtx, enum machine_mode,
-         enum expand_modifier modifier));
-
-lang_expand_expr_t lang_expand_expr = 0;
-
 /* Pointer to function to finish handling an incomplete decl at the
    end of compilation.  */
 
@@ -4945,8 +4937,6 @@ process_options ()
 static void
 lang_independent_init ()
 {
-  lang_expand_expr = (lang_expand_expr_t) do_abort;
-
   /* Initialize the garbage-collector, and string pools.  */
   init_ggc ();
   ggc_add_rtx_root (&stack_limit_rtx, 1);