From 29105cea6a1c86b7fcaa96cb78a6d948b32564be Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 10 Apr 2000 11:51:53 +0000 Subject: [PATCH] expmed.c (init_expmed): Don't free objects we make. * expmed.c (init_expmed): Don't free objects we make. * emit-rtl.c (gen_rtx_CONST_INT, init_emit_once): Minor cleanups. From-SVN: r33057 --- gcc/ChangeLog | 3 +++ gcc/emit-rtl.c | 23 ++++++++++------------- gcc/expmed.c | 8 -------- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 30c264a1211..333d0f5c3a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ Mon Apr 10 07:21:13 2000 Richard Kenner + * expmed.c (init_expmed): Don't free objects we make. + * emit-rtl.c (gen_rtx_CONST_INT, init_emit_once): Minor cleanups. + * expr.c (get_inner_reference): Correct some WITH_RECORD_EXPR cases. (expand_expr, case CONVERT_EXPR): Pass proper alignment to store_field. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index feead7697dc..e697d55c455 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -248,27 +248,26 @@ gen_rtx_CONST_INT (mode, arg) #endif /* Look up the CONST_INT in the hash table. */ - slot = htab_find_slot_with_hash (const_int_htab, - &arg, - (hashval_t) arg, - /*insert=*/1); - if (!*slot) + slot = htab_find_slot_with_hash (const_int_htab, &arg, (hashval_t) arg, 1); + if (*slot == 0) { if (!ggc_p) { push_obstacks_nochange (); end_temporary_allocation (); + *slot = gen_rtx_raw_CONST_INT (VOIDmode, arg); + pop_obstacks (); } - *slot = gen_rtx_raw_CONST_INT (VOIDmode, arg); - if (!ggc_p) - pop_obstacks (); + else + *slot = gen_rtx_raw_CONST_INT (VOIDmode, arg); } return (rtx) *slot; } -/* CONST_DOUBLEs needs special handling because its length is known +/* CONST_DOUBLEs needs special handling because their length is known only at run-time. */ + rtx gen_rtx_CONST_DOUBLE (mode, arg0, arg1, arg2) enum machine_mode mode; @@ -4157,10 +4156,8 @@ init_emit_once (line_numbers) ggc_add_rtx_root (&return_address_pointer_rtx, 1); /* Initialize the CONST_INT hash table. */ - const_int_htab = htab_create (37, - const_int_htab_hash, - const_int_htab_eq, - NULL); + const_int_htab = htab_create (37, const_int_htab_hash, + const_int_htab_eq, NULL); ggc_add_root (&const_int_htab, 1, sizeof (const_int_htab), rtx_htab_mark); } diff --git a/gcc/expmed.c b/gcc/expmed.c index 4194f2b182e..16c9bef6b5f 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -90,7 +90,6 @@ static int mul_highpart_cost[NUM_MACHINE_MODES]; void init_expmed () { - char *free_point; /* This is "some random pseudo register" for purposes of calling recog to see what insns exist. */ rtx reg = gen_rtx_REG (word_mode, 10000); @@ -101,11 +100,6 @@ init_expmed () start_sequence (); - /* Since we are on the permanent obstack, we must be sure we save this - spot AFTER we call start_sequence, since it will reuse the rtl it - makes. */ - free_point = (char *) oballoc (0); - reg = gen_rtx_REG (word_mode, 10000); zero_cost = rtx_cost (const0_rtx, 0); @@ -191,9 +185,7 @@ init_expmed () } } - /* Free the objects we just allocated. */ end_sequence (); - obfree (free_point); } /* Return an rtx representing minus the value of X. -- 2.30.2