From patchwork Thu Aug 23 18:49:52 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kenneth Zadeck X-Patchwork-Id: 179704 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 580162C00BD for ; Fri, 24 Aug 2012 04:50:25 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1346352626; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: References:In-Reply-To:Content-Type:Mailing-List:Precedence: List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=YVn9+IGCmKXEFppaG3roO0JdQTU=; b=HvdwBzX2ojDDVUa 3T7D9OYkE2YYCJgqWNQ3TFaHNAFUbjr8Z1tBbEce1Zv6TiYlFpxtbsVLbIVXZLQ9 sxiHCPZ4ZoLPrZWSpyoi/a17Slrpmtxb9Uyv80anfRGHi6p6vnjh3p1Q92vY+kC/ LyjOrH//95bVhdthzS7B+FWKUjN8= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:X-Google-DKIM-Signature:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject:References:In-Reply-To:Content-Type:X-Gm-Message-State:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=hE2yJb0gEQVJHi+Mh0X2Bf02w3SvPBZP0sGfkUE2ojiiQ1t4Uozi6TtmW+3/ME NUSxBMNbmsYtyx69/mO8kDKsYKOxazoYXKo/HF536Nn/Rvigq2d6Qt7CCdNLTFzz QOT+r/jDPfn4w+ziGS6qlCwkaclSDilaKTN1ENx7NLljk=; Received: (qmail 9439 invoked by alias); 23 Aug 2012 18:50:18 -0000 Received: (qmail 9420 invoked by uid 22791); 23 Aug 2012 18:50:14 -0000 X-SWARE-Spam-Status: No, hits=-3.6 required=5.0 tests=BAYES_00, KHOP_RCVD_UNTRUST, KHOP_THREADED, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-iy0-f175.google.com (HELO mail-iy0-f175.google.com) (209.85.210.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 23 Aug 2012 18:49:56 +0000 Received: by iaky10 with SMTP id y10so1842010iak.20 for ; Thu, 23 Aug 2012 11:49:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:x-gm-message-state; bh=VqJOFxSrLNOey9Hl+6GuuNUWUc40lF5DHpgCgUG4kuA=; b=cKCJl4j4t5QWHEoQ4q+QWPBho4KjS5z61SgcMvHf5ntVTquM0Tu02nox5H1exHoFR3 l+X2330bjq7Ql/dUUR1Qlx3mxjBnXwXretbrIkgisbuoC5mtru441CkfhH13Fx99++EG pJfZccvFta1NPMKYuuIylsr9NpozFz3eAsIwghdW5YL4z4O7ppisvS0T8ZA0Tvgpf5Sb bBH+DUZiJ0FIdPKUyjzHw3yZIGQvFPO1TtbL5DtqeNa/pZie8jMs78kGz+1CZKdC25xN S1MtCK1R0oROzDfZkHeWa/YsfK33lqvW5wPSAgQUTbzfHYkReepTKesygNX8404yGg1R j7Tw== Received: by 10.50.187.170 with SMTP id ft10mr7166563igc.36.1345747795961; Thu, 23 Aug 2012 11:49:55 -0700 (PDT) Received: from ?IPv6:2001:468:913:2044:40f6:e3ac:db1e:367a? ([2001:468:913:2044:40f6:e3ac:db1e:367a]) by mx.google.com with ESMTPS id dw5sm184653igc.6.2012.08.23.11.49.54 (version=SSLv3 cipher=OTHER); Thu, 23 Aug 2012 11:49:55 -0700 (PDT) Message-ID: <50367B50.7000502@naturalbridge.com> Date: Thu, 23 Aug 2012 14:49:52 -0400 From: Kenneth Zadeck User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120714 Thunderbird/14.0 MIME-Version: 1.0 To: gcc-patches , Mike Stump , rdsandiford@googlemail.com Subject: Re: patch for machine independent rtl section to hide case statements for different types of constants. References: <503240A7.6030502@naturalbridge.com> <50324280.9010801@naturalbridge.com> <503380ED.70103@naturalbridge.com> In-Reply-To: X-Gm-Message-State: ALoCoQn3S/9hBBB4i5CvNdIn2NP1osnBJRr675LWNh8+ks1wePeMS9VpYI+C0gJefYPZFBaC6ddH Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org All changes made as Richard requested. Retested on x86-64. committed as revision 190627 2012-08-23 Kenneth Zadeck * alias.c (rtx_equal_for_memref_p): Convert constant cases. * combine.c (find_single_use_1, mark_used_regs_combine): Convert to CASE_CONST_ANY. * cse.c (exp_equiv_p, canon_reg, fold_rtx, cse_process_notes_1, count_reg_usage): Convert constant cases. * cselib.c (cselib_expand_value_rtx_1): Convert to CASE_CONST_ANY. (cselib_subst_to_values): Convert constant cases. * df-scan.c (df_uses_record): Ditto. * dse.c (const_or_frame_p): Convert case statements to explicit if-then-else using mode classes. * emit-rtl.c (verify_rtx_sharing, copy_insn_1): Convert constant cases. * explow.c (convert_memory_address_addr_space): Ditto. * gcse.c (want_to_gcse_p, oprs_unchanged_p, compute_transp): Ditto. * genattrtab.c (attr_copy_rtx, clear_struct_flag): Ditto. * ira.c (equiv_init_varies_p, contains_replace_regs, memref_referenced_p, rtx_moveable_p): Ditto. * jump.c (mark_jump_label_1): Remove constant cases. (rtx_renumbered_equal_p): Convert to CASE_CONST_UNIQUE. * loop-invariant.c (check_maybe_invariant, hash_invariant_expr_1, invariant_expr_equal_p): Convert to CASE_CONST_ANY. * postreload-gcse.c (oprs_unchanged_p): Convert constant cases. * reginfo.c (reg_scan_mark_refs): Ditto. * regrename.c (scan_rtx): Ditto. * reload1.c (eliminate_regs_1, elimination_effects, scan_paradoxical_subregs): Ditto. * reload.c (operands_match_p, subst_reg_equivs): Ditto. * resource.c (mark_referenced_resources, mark_set_resources): Ditto. * rtlanal.c (rtx_unstable_p, rtx_varies_p, count_occurrences) (reg_mentioned_p, modified_between_p, modified_in_p) (volatile_insn_p, volatile_refs_p, side_effects_p, may_trap_p_1, inequality_comparisons_p, computed_jump_p_1): Ditto. * rtl.c (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Ditto. * sched-deps.c (sched_analyze_2): Ditto. * valtrack.c (cleanup_auto_inc_dec): Ditto. * rtl.h: (CASE_CONST_SCALAR_INT, CASE_CONST_UNIQUE, CASE_CONST_ANY): New macros. On 08/21/2012 12:56 PM, Richard Sandiford wrote: > Kenneth Zadeck writes: >> I plan to commit this in a few days unless someone has some comments. >> This is a mostly trivial patch and the changes from that are Richard >> Sandiford's and he is an rtl maintainer. > Please don't do this. Patches need to be sent for review in their > final form. Obviously, having got this far with the patch, you're free > to beat me up if I don't review it. :-) > > Anyway, please do call it CASE_CONST_SCALAR_INT rather than > CASE_CONST_SCALAR_INTEGER. Like I said in my original mail, > CASE_CONST_SCALAR_INT chimes nicely with SCALAR_INT_MODE_P, etc., > and (as I didn't say) it'd be better not to have two spellings > of the same thing. > >> diff -upNr '--exclude=.svn' gccBaseline/gcc/combine.c gccWCase/gcc/combine.c >> --- gccBaseline/gcc/combine.c 2012-08-17 09:35:24.802195795 -0400 >> +++ gccWCase/gcc/combine.c 2012-08-20 15:43:34.659362244 -0400 >> @@ -531,12 +531,10 @@ find_single_use_1 (rtx dest, rtx *loc) >> >> switch (code) >> { >> - case CONST_INT: >> case CONST: >> case LABEL_REF: >> case SYMBOL_REF: >> - case CONST_DOUBLE: >> - case CONST_VECTOR: >> + CASE_CONST_UNIQUE: >> case CLOBBER: >> return 0; >> >> @@ -12788,10 +12786,8 @@ mark_used_regs_combine (rtx x) >> { >> case LABEL_REF: >> case SYMBOL_REF: >> - case CONST_INT: >> case CONST: >> - case CONST_DOUBLE: >> - case CONST_VECTOR: >> + CASE_CONST_UNIQUE: >> case PC: >> case ADDR_VEC: >> case ADDR_DIFF_VEC: > These were supposed to be CASE_CONST_ANY. The omission of CONST_FIXED > looks like an oversight. > >> switch (code) >> { >> - case CONST_INT: >> - case CONST_DOUBLE: >> - case CONST_FIXED: >> + CASE_CONST_UNIQUE: >> case SYMBOL_REF: >> case CONST: >> case LABEL_REF: > This was suppsoed to be CASE_CONST_ANY too. The omission of CONST_VECTOR > looks like an oversight. > >> +/* Match CONST_*s for which pointer equality corresponds to value >> +equality. */ > Should be: > > /* Match CONST_*s for which pointer equality corresponds to value equality. */ > > (probably an artefact of my work mailer, sorry) > >> + >> + >> + > Rather a lot of whitespace there. One line seems enough, since we're > just before the definition of CONST_INT_P. > > OK with those changes, thanks. > > Richard diff -upNr '--exclude=.svn' gccBaseline/gcc/alias.c gccWCase/gcc/alias.c --- gccBaseline/gcc/alias.c 2012-08-23 09:43:48.794585467 -0400 +++ gccWCase/gcc/alias.c 2012-08-23 09:46:18.976923020 -0400 @@ -1489,9 +1489,7 @@ rtx_equal_for_memref_p (const_rtx x, con return XSTR (x, 0) == XSTR (y, 0); case VALUE: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: + CASE_CONST_UNIQUE: /* There's no need to compare the contents of CONST_DOUBLEs or CONST_INTs because pointer equality is a good enough comparison for these nodes. */ diff -upNr '--exclude=.svn' gccBaseline/gcc/combine.c gccWCase/gcc/combine.c --- gccBaseline/gcc/combine.c 2012-08-17 09:35:24.802195795 -0400 +++ gccWCase/gcc/combine.c 2012-08-21 14:31:16.639994125 -0400 @@ -531,12 +531,10 @@ find_single_use_1 (rtx dest, rtx *loc) switch (code) { - case CONST_INT: case CONST: case LABEL_REF: case SYMBOL_REF: - case CONST_DOUBLE: - case CONST_VECTOR: + CASE_CONST_ANY: case CLOBBER: return 0; @@ -12788,10 +12786,8 @@ mark_used_regs_combine (rtx x) { case LABEL_REF: case SYMBOL_REF: - case CONST_INT: case CONST: - case CONST_DOUBLE: - case CONST_VECTOR: + CASE_CONST_ANY: case PC: case ADDR_VEC: case ADDR_DIFF_VEC: diff -upNr '--exclude=.svn' gccBaseline/gcc/cse.c gccWCase/gcc/cse.c --- gccBaseline/gcc/cse.c 2012-07-27 16:58:24.829691705 -0400 +++ gccWCase/gcc/cse.c 2012-08-20 15:47:26.924501205 -0400 @@ -2623,9 +2623,7 @@ exp_equiv_p (const_rtx x, const_rtx y, i { case PC: case CC0: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: + CASE_CONST_UNIQUE: return x == y; case LABEL_REF: @@ -2829,10 +2827,7 @@ canon_reg (rtx x, rtx insn) case PC: case CC0: case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: case ADDR_VEC: @@ -3133,10 +3128,7 @@ fold_rtx (rtx x, rtx insn) return x; case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: case REG: @@ -3198,12 +3190,9 @@ fold_rtx (rtx x, rtx insn) break; case CONST: - case CONST_INT: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: const_arg = folded_arg; break; @@ -6063,13 +6052,10 @@ cse_process_notes_1 (rtx x, rtx object, switch (code) { - case CONST_INT: case CONST: case SYMBOL_REF: case LABEL_REF: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case PC: case CC0: case LO_SUM: @@ -6671,10 +6657,7 @@ count_reg_usage (rtx x, int *counts, rtx case PC: case CC0: case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: return; diff -upNr '--exclude=.svn' gccBaseline/gcc/cselib.c gccWCase/gcc/cselib.c --- gccBaseline/gcc/cselib.c 2012-08-12 18:32:23.788114457 -0400 +++ gccWCase/gcc/cselib.c 2012-08-20 15:47:46.184263981 -0400 @@ -1603,9 +1603,7 @@ cselib_expand_value_rtx_1 (rtx orig, str } } - case CONST_INT: - case CONST_DOUBLE: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case CODE_LABEL: case PC: @@ -1856,10 +1854,7 @@ cselib_subst_to_values (rtx x, enum mach break; return e->val_rtx; - case CONST_DOUBLE: - case CONST_VECTOR: - case CONST_INT: - case CONST_FIXED: + CASE_CONST_ANY: return x; case PRE_DEC: diff -upNr '--exclude=.svn' gccBaseline/gcc/df-scan.c gccWCase/gcc/df-scan.c --- gccBaseline/gcc/df-scan.c 2012-08-23 09:43:48.790585511 -0400 +++ gccWCase/gcc/df-scan.c 2012-08-23 09:46:18.964923153 -0400 @@ -3107,11 +3107,8 @@ df_uses_record (struct df_collection_rec { case LABEL_REF: case SYMBOL_REF: - case CONST_INT: case CONST: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case PC: case CC0: case ADDR_VEC: diff -upNr '--exclude=.svn' gccBaseline/gcc/dse.c gccWCase/gcc/dse.c --- gccBaseline/gcc/dse.c 2012-08-19 13:17:02.662197266 -0400 +++ gccWCase/gcc/dse.c 2012-08-20 17:41:13.119487259 -0400 @@ -1109,17 +1109,11 @@ add_non_frame_wild_read (bb_info_t bb_in static bool const_or_frame_p (rtx x) { - switch (GET_CODE (x)) - { - case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_VECTOR: - case SYMBOL_REF: - case LABEL_REF: - return true; + if (CONSTANT_P (x)) + return true; - case REG: + if (GET_CODE (x) == REG) + { /* Note that we have to test for the actual rtx used for the frame and arg pointers and not just the register number in case we have eliminated the frame and/or arg pointer and are using it @@ -1130,10 +1124,9 @@ const_or_frame_p (rtx x) || x == pic_offset_table_rtx) return true; return false; - - default: - return false; } + + return false; } /* Take all reasonable action to put the address of MEM into the form diff -upNr '--exclude=.svn' gccBaseline/gcc/emit-rtl.c gccWCase/gcc/emit-rtl.c --- gccBaseline/gcc/emit-rtl.c 2012-08-17 09:35:24.798195842 -0400 +++ gccWCase/gcc/emit-rtl.c 2012-08-20 15:48:15.935898475 -0400 @@ -2504,10 +2504,7 @@ verify_rtx_sharing (rtx orig, rtx insn) case REG: case DEBUG_EXPR: case VALUE: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: case CODE_LABEL: @@ -2721,10 +2718,7 @@ repeat: case REG: case DEBUG_EXPR: case VALUE: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: case CODE_LABEL: @@ -2843,10 +2837,7 @@ repeat: case REG: case DEBUG_EXPR: case VALUE: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case CODE_LABEL: case PC: @@ -5236,10 +5227,7 @@ copy_insn_1 (rtx orig) { case REG: case DEBUG_EXPR: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case CODE_LABEL: case PC: diff -upNr '--exclude=.svn' gccBaseline/gcc/explow.c gccWCase/gcc/explow.c --- gccBaseline/gcc/explow.c 2012-08-12 18:32:23.788114457 -0400 +++ gccWCase/gcc/explow.c 2012-08-21 16:10:08.334548711 -0400 @@ -347,8 +347,7 @@ convert_memory_address_addr_space (enum to the default case. */ switch (GET_CODE (x)) { - case CONST_INT: - case CONST_DOUBLE: + CASE_CONST_SCALAR_INT: if (GET_MODE_SIZE (to_mode) < GET_MODE_SIZE (from_mode)) code = TRUNCATE; else if (POINTERS_EXTEND_UNSIGNED < 0) diff -upNr '--exclude=.svn' gccBaseline/gcc/gcse.c gccWCase/gcc/gcse.c --- gccBaseline/gcc/gcse.c 2012-08-12 18:32:23.784114505 -0400 +++ gccWCase/gcc/gcse.c 2012-08-20 15:48:22.987811730 -0400 @@ -742,10 +742,7 @@ want_to_gcse_p (rtx x, int *max_distance case CALL: return 0; - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: if (!doing_code_hoisting_p) /* Do not PRE constants. */ return 0; @@ -887,10 +884,7 @@ oprs_unchanged_p (const_rtx x, const_rtx case PC: case CC0: /*FIXME*/ case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: case ADDR_VEC: @@ -1693,10 +1687,7 @@ compute_transp (const_rtx x, int indx, s case PC: case CC0: /*FIXME*/ case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: case ADDR_VEC: diff -upNr '--exclude=.svn' gccBaseline/gcc/genattrtab.c gccWCase/gcc/genattrtab.c --- gccBaseline/gcc/genattrtab.c 2012-05-29 13:46:05.453557165 -0400 +++ gccWCase/gcc/genattrtab.c 2012-08-21 14:31:39.059739429 -0400 @@ -674,9 +674,7 @@ attr_copy_rtx (rtx orig) switch (code) { case REG: - case CONST_INT: - case CONST_DOUBLE: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case MATCH_TEST: case CODE_LABEL: @@ -3090,9 +3088,7 @@ clear_struct_flag (rtx x) switch (code) { case REG: - case CONST_INT: - case CONST_DOUBLE: - case CONST_VECTOR: + CASE_CONST_ANY: case MATCH_TEST: case SYMBOL_REF: case CODE_LABEL: diff -upNr '--exclude=.svn' gccBaseline/gcc/ira.c gccWCase/gcc/ira.c --- gccBaseline/gcc/ira.c 2012-08-14 15:08:58.432065441 -0400 +++ gccWCase/gcc/ira.c 2012-08-20 15:48:30.151723673 -0400 @@ -2445,10 +2445,7 @@ equiv_init_varies_p (rtx x) return !MEM_READONLY_P (x) || equiv_init_varies_p (XEXP (x, 0)); case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: return 0; @@ -2560,13 +2557,10 @@ contains_replace_regs (rtx x) switch (code) { - case CONST_INT: case CONST: case LABEL_REF: case SYMBOL_REF: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case PC: case CC0: case HIGH: @@ -2608,13 +2602,10 @@ memref_referenced_p (rtx memref, rtx x) switch (code) { - case CONST_INT: case CONST: case LABEL_REF: case SYMBOL_REF: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case PC: case CC0: case HIGH: @@ -3566,10 +3557,7 @@ rtx_moveable_p (rtx *loc, enum op_type t switch (code) { case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: return true; diff -upNr '--exclude=.svn' gccBaseline/gcc/jump.c gccWCase/gcc/jump.c --- gccBaseline/gcc/jump.c 2012-07-22 16:55:01.223983160 -0400 +++ gccWCase/gcc/jump.c 2012-08-20 15:53:11.264270462 -0400 @@ -1078,8 +1078,6 @@ mark_jump_label_1 (rtx x, rtx insn, bool case PC: case CC0: case REG: - case CONST_INT: - case CONST_DOUBLE: case CLOBBER: case CALL: return; @@ -1753,8 +1751,7 @@ rtx_renumbered_equal_p (const_rtx x, con case CC0: case ADDR_VEC: case ADDR_DIFF_VEC: - case CONST_INT: - case CONST_DOUBLE: + CASE_CONST_UNIQUE: return 0; case LABEL_REF: diff -upNr '--exclude=.svn' gccBaseline/gcc/loop-invariant.c gccWCase/gcc/loop-invariant.c --- gccBaseline/gcc/loop-invariant.c 2012-07-22 16:55:01.239982968 -0400 +++ gccWCase/gcc/loop-invariant.c 2012-08-21 13:16:35.190207423 -0400 @@ -203,9 +203,7 @@ check_maybe_invariant (rtx x) switch (code) { - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: + CASE_CONST_ANY: case SYMBOL_REF: case CONST: case LABEL_REF: @@ -302,9 +300,7 @@ hash_invariant_expr_1 (rtx insn, rtx x) switch (code) { - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: + CASE_CONST_ANY: case SYMBOL_REF: case CONST: case LABEL_REF: @@ -363,9 +359,7 @@ invariant_expr_equal_p (rtx insn1, rtx e switch (code) { - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: + CASE_CONST_ANY: case SYMBOL_REF: case CONST: case LABEL_REF: diff -upNr '--exclude=.svn' gccBaseline/gcc/postreload-gcse.c gccWCase/gcc/postreload-gcse.c --- gccBaseline/gcc/postreload-gcse.c 2012-07-22 16:55:01.143984121 -0400 +++ gccWCase/gcc/postreload-gcse.c 2012-08-20 15:48:56.107404644 -0400 @@ -519,10 +519,7 @@ oprs_unchanged_p (rtx x, rtx insn, bool case PC: case CC0: /*FIXME*/ case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: case ADDR_VEC: diff -upNr '--exclude=.svn' gccBaseline/gcc/reginfo.c gccWCase/gcc/reginfo.c --- gccBaseline/gcc/reginfo.c 2012-07-22 16:55:01.247982871 -0400 +++ gccWCase/gcc/reginfo.c 2012-08-20 15:49:01.059343779 -0400 @@ -1022,10 +1022,7 @@ reg_scan_mark_refs (rtx x, rtx insn) switch (code) { case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case CC0: case PC: case SYMBOL_REF: diff -upNr '--exclude=.svn' gccBaseline/gcc/regrename.c gccWCase/gcc/regrename.c --- gccBaseline/gcc/regrename.c 2012-08-17 09:35:24.626197862 -0400 +++ gccWCase/gcc/regrename.c 2012-08-20 15:49:07.627263131 -0400 @@ -1342,10 +1342,7 @@ scan_rtx (rtx insn, rtx *loc, enum reg_c switch (code) { case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: case CC0: diff -upNr '--exclude=.svn' gccBaseline/gcc/reload1.c gccWCase/gcc/reload1.c --- gccBaseline/gcc/reload1.c 2012-08-17 09:35:24.878194902 -0400 +++ gccWCase/gcc/reload1.c 2012-08-20 15:49:13.603189634 -0400 @@ -2566,10 +2566,7 @@ eliminate_regs_1 (rtx x, enum machine_mo switch (code) { - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case CONST: case SYMBOL_REF: case CODE_LABEL: @@ -2983,10 +2980,7 @@ elimination_effects (rtx x, enum machine switch (code) { - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case CONST: case SYMBOL_REF: case CODE_LABEL: @@ -4454,13 +4448,10 @@ scan_paradoxical_subregs (rtx x) switch (code) { case REG: - case CONST_INT: case CONST: case SYMBOL_REF: case LABEL_REF: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: /* shouldn't happen, but just in case. */ + CASE_CONST_ANY: case CC0: case PC: case USE: diff -upNr '--exclude=.svn' gccBaseline/gcc/reload.c gccWCase/gcc/reload.c --- gccBaseline/gcc/reload.c 2012-08-12 18:32:23.712115357 -0400 +++ gccWCase/gcc/reload.c 2012-08-20 15:49:20.451105508 -0400 @@ -2318,9 +2318,7 @@ operands_match_p (rtx x, rtx y) switch (code) { - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: + CASE_CONST_UNIQUE: return 0; case LABEL_REF: @@ -5341,11 +5339,8 @@ subst_reg_equivs (rtx ad, rtx insn) switch (code) { case HIGH: - case CONST_INT: case CONST: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: case PC: diff -upNr '--exclude=.svn' gccBaseline/gcc/resource.c gccWCase/gcc/resource.c --- gccBaseline/gcc/resource.c 2012-06-27 22:29:11.986407159 -0400 +++ gccWCase/gcc/resource.c 2012-08-20 15:49:26.751028089 -0400 @@ -215,10 +215,7 @@ mark_referenced_resources (rtx x, struct switch (code) { case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case PC: case SYMBOL_REF: case LABEL_REF: @@ -632,10 +629,7 @@ mark_set_resources (rtx x, struct resour case BARRIER: case CODE_LABEL: case USE: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case LABEL_REF: case SYMBOL_REF: case CONST: diff -upNr '--exclude=.svn' gccBaseline/gcc/rtlanal.c gccWCase/gcc/rtlanal.c --- gccBaseline/gcc/rtlanal.c 2012-08-12 18:32:23.712115357 -0400 +++ gccWCase/gcc/rtlanal.c 2012-08-20 15:49:38.102888628 -0400 @@ -97,10 +97,7 @@ rtx_unstable_p (const_rtx x) return !MEM_READONLY_P (x) || rtx_unstable_p (XEXP (x, 0)); case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: return 0; @@ -170,10 +167,7 @@ rtx_varies_p (const_rtx x, bool for_alia return !MEM_READONLY_P (x) || rtx_varies_p (XEXP (x, 0), for_alias); case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: return 0; @@ -585,10 +579,7 @@ count_occurrences (const_rtx x, const_rt switch (code) { case REG: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case CODE_LABEL: case PC: @@ -690,10 +681,7 @@ reg_mentioned_p (const_rtx reg, const_rt case PC: return 0; - case CONST_INT: - case CONST_VECTOR: - case CONST_DOUBLE: - case CONST_FIXED: + CASE_CONST_ANY: /* These are kept unique for a given value. */ return 0; @@ -887,10 +875,7 @@ modified_between_p (const_rtx x, const_r switch (code) { - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case CONST: case SYMBOL_REF: case LABEL_REF: @@ -946,10 +931,7 @@ modified_in_p (const_rtx x, const_rtx in switch (code) { - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case CONST: case SYMBOL_REF: case LABEL_REF: @@ -2095,11 +2077,8 @@ volatile_insn_p (const_rtx x) { case LABEL_REF: case SYMBOL_REF: - case CONST_INT: case CONST: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case CC0: case PC: case REG: @@ -2160,11 +2139,8 @@ volatile_refs_p (const_rtx x) { case LABEL_REF: case SYMBOL_REF: - case CONST_INT: case CONST: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case CC0: case PC: case REG: @@ -2223,11 +2199,8 @@ side_effects_p (const_rtx x) { case LABEL_REF: case SYMBOL_REF: - case CONST_INT: case CONST: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case CC0: case PC: case REG: @@ -2312,10 +2285,7 @@ may_trap_p_1 (const_rtx x, unsigned flag switch (code) { /* Handle these cases quickly. */ - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case LABEL_REF: case CONST: @@ -2514,10 +2484,7 @@ inequality_comparisons_p (const_rtx x) case SCRATCH: case PC: case CC0: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case CONST: case LABEL_REF: case SYMBOL_REF: @@ -2760,10 +2727,7 @@ computed_jump_p_1 (const_rtx x) return 0; case CONST: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case REG: return 1; diff -upNr '--exclude=.svn' gccBaseline/gcc/rtl.c gccWCase/gcc/rtl.c --- gccBaseline/gcc/rtl.c 2012-07-25 19:35:50.088957883 -0400 +++ gccWCase/gcc/rtl.c 2012-08-20 15:49:47.010779201 -0400 @@ -248,10 +248,7 @@ copy_rtx (rtx orig) case REG: case DEBUG_EXPR: case VALUE: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case CODE_LABEL: case PC: @@ -400,9 +397,7 @@ rtx_equal_p_cb (const_rtx x, const_rtx y case DEBUG_EXPR: case VALUE: case SCRATCH: - case CONST_DOUBLE: - case CONST_INT: - case CONST_FIXED: + CASE_CONST_UNIQUE: return 0; case DEBUG_IMPLICIT_PTR: @@ -539,9 +534,7 @@ rtx_equal_p (const_rtx x, const_rtx y) case DEBUG_EXPR: case VALUE: case SCRATCH: - case CONST_DOUBLE: - case CONST_INT: - case CONST_FIXED: + CASE_CONST_UNIQUE: return 0; case DEBUG_IMPLICIT_PTR: diff -upNr '--exclude=.svn' gccBaseline/gcc/rtl.h gccWCase/gcc/rtl.h --- gccBaseline/gcc/rtl.h 2012-08-12 18:32:23.796114363 -0400 +++ gccWCase/gcc/rtl.h 2012-08-21 16:10:13.774482483 -0400 @@ -403,6 +403,24 @@ struct GTY((variable_size)) rtvec_def { /* Predicate yielding nonzero iff X is an rtx for a memory location. */ #define MEM_P(X) (GET_CODE (X) == MEM) +/* Match CONST_*s that can represent compile-time constant integers. */ +#define CASE_CONST_SCALAR_INT \ + case CONST_INT: \ + case CONST_DOUBLE + +/* Match CONST_*s for which pointer equality corresponds to value equality. */ +#define CASE_CONST_UNIQUE \ + case CONST_INT: \ + case CONST_DOUBLE: \ + case CONST_FIXED + +/* Match all CONST_* rtxes. */ +#define CASE_CONST_ANY \ + case CONST_INT: \ + case CONST_DOUBLE: \ + case CONST_FIXED: \ + case CONST_VECTOR + /* Predicate yielding nonzero iff X is an rtx for a constant integer. */ #define CONST_INT_P(X) (GET_CODE (X) == CONST_INT) diff -upNr '--exclude=.svn' gccBaseline/gcc/sched-deps.c gccWCase/gcc/sched-deps.c --- gccBaseline/gcc/sched-deps.c 2012-07-09 14:05:35.142032050 -0400 +++ gccWCase/gcc/sched-deps.c 2012-08-20 16:31:13.700504435 -0400 @@ -2547,10 +2547,7 @@ sched_analyze_2 (struct deps_desc *deps, switch (code) { - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case CONST: case LABEL_REF: diff -upNr '--exclude=.svn' gccBaseline/gcc/valtrack.c gccWCase/gcc/valtrack.c --- gccBaseline/gcc/valtrack.c 2012-08-02 07:44:36.439673435 -0400 +++ gccWCase/gcc/valtrack.c 2012-08-20 16:30:16.265200620 -0400 @@ -44,10 +44,7 @@ cleanup_auto_inc_dec (rtx src, enum mach switch (code) { case REG: - case CONST_INT: - case CONST_DOUBLE: - case CONST_FIXED: - case CONST_VECTOR: + CASE_CONST_ANY: case SYMBOL_REF: case CODE_LABEL: case PC: