From owner-svn-src-head@FreeBSD.ORG Thu Jan 2 13:53:55 2014 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8C9DCEEA; Thu, 2 Jan 2014 13:53:55 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6D0EA1C86; Thu, 2 Jan 2014 13:53:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s02DrtZo018834; Thu, 2 Jan 2014 13:53:55 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s02Drr2S018826; Thu, 2 Jan 2014 13:53:53 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401021353.s02Drr2S018826@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Thu, 2 Jan 2014 13:53:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260194 - in head/contrib/gcc: . cp X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Jan 2014 13:53:55 -0000 Author: pfg Date: Thu Jan 2 13:53:53 2014 New Revision: 260194 URL: http://svnweb.freebsd.org/changeset/base/260194 Log: Revert r260073; small diff reduction wrt gcc43 and Apple GCC. Unfortunately this causes ICE on powerpc and sparc64. Reducing these differences against upstream is not important anymore so hopefully I have finished breaking the compiler occasionally. Modified: head/contrib/gcc/ChangeLog.gcc43 head/contrib/gcc/cp/ChangeLog head/contrib/gcc/cp/g++spec.c head/contrib/gcc/libgcc2.c head/contrib/gcc/libgcc2.h head/contrib/gcc/loop-init.c head/contrib/gcc/toplev.c head/contrib/gcc/tree-ssa-address.c Modified: head/contrib/gcc/ChangeLog.gcc43 ============================================================================== --- head/contrib/gcc/ChangeLog.gcc43 Thu Jan 2 13:48:54 2014 (r260193) +++ head/contrib/gcc/ChangeLog.gcc43 Thu Jan 2 13:53:53 2014 (r260194) @@ -156,15 +156,6 @@ * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction. -2007-04-24 Richard Henderson (r124106) - - * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from - IS_IBM_EXTENDED. Also define in terms of WIDEST_HARDWARE_FP_SIZE. - * libgcc2.c (__floatdisf): Avoid double-word arithmetic when - looking for non-zero bits shifted out. Avoid a recursive call - when constructing the scalar. - (__floatundisf): Likewise. - 2007-04-16 Lawrence Crowl (r123909) * doc/invoke.texi (Debugging Options): Add documentation for the @@ -257,11 +248,6 @@ * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and the *_DIV_EXPR codes correctly with overflow infinities. -2007-03-04 Zdenek Dvorak (r122528) - - * tree-ssa-address.c (create_mem_ref): Do not put an expression - containing a cast to the base of TARGET_MEM_REF. - 2007-02-09 Dwarakanath Rajagopal (r121763) * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10. @@ -438,11 +424,6 @@ and amdfam10. * doc/extend.texi: Add documentation for SSE4A builtins. -2007-02-01 Zdenek Dvorak (r121464) - - * toplev.c (lang_dependent_init): Call init_set_costs. - * loop-init.c (loop_optimizer_init): Do not call init_set_costs. - 2007-01-24 Jakub Jelinek (r121140) * config/i386/i386.h (x86_cmpxchg16b): Remove const. Modified: head/contrib/gcc/cp/ChangeLog ============================================================================== --- head/contrib/gcc/cp/ChangeLog Thu Jan 2 13:48:54 2014 (r260193) +++ head/contrib/gcc/cp/ChangeLog Thu Jan 2 13:53:53 2014 (r260194) @@ -314,12 +314,6 @@ PR c++/30895 * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees. -2007-03-02 Geoffrey Keating (r122488) - - * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling - Objective-C++. Don't exit early if -shared-libgcc needs to be - added. - 2007-02-22 Simon Martin PR c++/29475 Modified: head/contrib/gcc/cp/g++spec.c ============================================================================== --- head/contrib/gcc/cp/g++spec.c Thu Jan 2 13:48:54 2014 (r260193) +++ head/contrib/gcc/cp/g++spec.c Thu Jan 2 13:53:53 2014 (r260194) @@ -159,19 +159,11 @@ lang_specific_driver (int *in_argc, cons arg = ""; if (library == 0 && (strcmp (arg, "c++") == 0 - || strcmp (arg, "c++-cpp-output") == 0 - || strcmp (arg, "objective-c++") == 0 - || strcmp (arg, "objective-c++-cpp-output") == 0)) + || strcmp (arg, "c++-cpp-output") == 0)) library = 1; saw_speclang = 1; } - else if (strcmp (argv[i], "-ObjC++") == 0) - { - if (library == 0) - library = 1; - saw_speclang = 1; - } /* Arguments that go directly to the linker might be .o files, or something, and so might cause libstdc++ to be needed. */ else if (strcmp (argv[i], "-Xlinker") == 0) @@ -245,6 +237,13 @@ lang_specific_driver (int *in_argc, cons if (quote) fatal ("argument to '%s' missing\n", quote); + /* If we know we don't have to do anything, bail now. */ + if (! added && library <= 0) + { + free (args); + return; + } + /* There's no point adding -shared-libgcc if we don't have a shared libgcc. */ #ifndef ENABLE_SHARED_LIBGCC Modified: head/contrib/gcc/libgcc2.c ============================================================================== --- head/contrib/gcc/libgcc2.c Thu Jan 2 13:48:54 2014 (r260193) +++ head/contrib/gcc/libgcc2.c Thu Jan 2 13:53:53 2014 (r260194) @@ -1420,7 +1420,11 @@ __floatunditf (UDWtype u) #define F_MODE_OK(SIZE) \ (SIZE < DI_SIZE \ && SIZE > (DI_SIZE - SIZE + FSSIZE) \ - && !AVOID_FP_TYPE_CONVERSION(SIZE)) + /* Don't use IBM Extended Double TFmode for TI->SF calculations. \ + The conversion from long double to float suffers from double \ + rounding, because we convert via double. In any case, the \ + fallback code is faster. */ \ + && !IS_IBM_EXTENDED (SIZE)) #if defined(L_floatdisf) #define FUNC __floatdisf #define FSTYPE SFtype @@ -1511,21 +1515,13 @@ FUNC (DWtype u) hi = u >> shift; /* If we lost any nonzero bits, set the lsb to ensure correct rounding. */ - if ((UWtype)u << (W_TYPE_SIZE - shift)) + if (u & (((DWtype)1 << shift) - 1)) hi |= 1; /* Convert the one word of data, and rescale. */ - FSTYPE f = hi, e; - if (shift == W_TYPE_SIZE) - e = Wtype_MAXp1_F; - /* The following two cases could be merged if we knew that the target - supported a native unsigned->float conversion. More often, we only - have a signed conversion, and have to add extra fixup code. */ - else if (shift == W_TYPE_SIZE - 1) - e = Wtype_MAXp1_F / 2; - else - e = (Wtype)1 << shift; - return f * e; + FSTYPE f = hi; + f *= (UDWtype)1 << shift; + return f; #endif } #endif @@ -1536,7 +1532,11 @@ FUNC (DWtype u) #define F_MODE_OK(SIZE) \ (SIZE < DI_SIZE \ && SIZE > (DI_SIZE - SIZE + FSSIZE) \ - && !AVOID_FP_TYPE_CONVERSION(SIZE)) + /* Don't use IBM Extended Double TFmode for TI->SF calculations. \ + The conversion from long double to float suffers from double \ + rounding, because we convert via double. In any case, the \ + fallback code is faster. */ \ + && !IS_IBM_EXTENDED (SIZE)) #if defined(L_floatundisf) #define FUNC __floatundisf #define FSTYPE SFtype @@ -1620,21 +1620,13 @@ FUNC (UDWtype u) hi = u >> shift; /* If we lost any nonzero bits, set the lsb to ensure correct rounding. */ - if ((UWtype)u << (W_TYPE_SIZE - shift)) + if (u & (((UDWtype)1 << shift) - 1)) hi |= 1; /* Convert the one word of data, and rescale. */ - FSTYPE f = hi, e; - if (shift == W_TYPE_SIZE) - e = Wtype_MAXp1_F; - /* The following two cases could be merged if we knew that the target - supported a native unsigned->float conversion. More often, we only - have a signed conversion, and have to add extra fixup code. */ - else if (shift == W_TYPE_SIZE - 1) - e = Wtype_MAXp1_F / 2; - else - e = (Wtype)1 << shift; - return f * e; + FSTYPE f = hi; + f *= (UDWtype)1 << shift; + return f; #endif } #endif Modified: head/contrib/gcc/libgcc2.h ============================================================================== --- head/contrib/gcc/libgcc2.h Thu Jan 2 13:48:54 2014 (r260193) +++ head/contrib/gcc/libgcc2.h Thu Jan 2 13:53:53 2014 (r260194) @@ -119,16 +119,10 @@ extern short int __get_eh_table_version /* FIXME: This #ifdef probably should be removed, ie. enable the test for mips too. */ -/* Don't use IBM Extended Double TFmode for TI->SF calculations. - The conversion from long double to float suffers from double - rounding, because we convert via double. In other cases, going - through the software fp routines is much slower than the fallback. */ #ifdef __powerpc__ -#define AVOID_FP_TYPE_CONVERSION(SIZE) (SIZE == 106) -#elif defined(WIDEST_HARDWARE_FP_SIZE) -#define AVOID_FP_TYPE_CONVERSION(SIZE) (SIZE > WIDEST_HARDWARE_FP_SIZE) +#define IS_IBM_EXTENDED(SIZE) (SIZE == 106) #else -#define AVOID_FP_TYPE_CONVERSION(SIZE) 0 +#define IS_IBM_EXTENDED(SIZE) 0 #endif /* In the first part of this file, we are interfacing to calls generated Modified: head/contrib/gcc/loop-init.c ============================================================================== --- head/contrib/gcc/loop-init.c Thu Jan 2 13:48:54 2014 (r260193) +++ head/contrib/gcc/loop-init.c Thu Jan 2 13:53:53 2014 (r260194) @@ -43,6 +43,13 @@ loop_optimizer_init (unsigned flags) struct loops *loops = XCNEW (struct loops); edge e; edge_iterator ei; + static bool first_time = true; + + if (first_time) + { + first_time = false; + init_set_costs (); + } /* Avoid annoying special cases of edges going to exit block. */ Modified: head/contrib/gcc/toplev.c ============================================================================== --- head/contrib/gcc/toplev.c Thu Jan 2 13:48:54 2014 (r260193) +++ head/contrib/gcc/toplev.c Thu Jan 2 13:53:53 2014 (r260194) @@ -1948,11 +1948,6 @@ lang_dependent_init (const char *name) provide a dummy function context for them. */ init_dummy_function_start (); init_expr_once (); - - /* Although the actions of init_set_costs are language-independent, - it uses optabs, so we cannot call it from backend_init. */ - init_set_costs (); - expand_dummy_function_end (); /* If dbx symbol table desired, initialize writing it and output the Modified: head/contrib/gcc/tree-ssa-address.c ============================================================================== --- head/contrib/gcc/tree-ssa-address.c Thu Jan 2 13:48:54 2014 (r260193) +++ head/contrib/gcc/tree-ssa-address.c Thu Jan 2 13:53:53 2014 (r260194) @@ -569,7 +569,7 @@ create_mem_ref (block_stmt_iterator *bsi struct affine_tree_combination *addr) { tree mem_ref, tmp; - tree atype; + tree addr_type = build_pointer_type (type), atype; struct mem_address parts; addr_to_parts (addr, &parts); @@ -597,23 +597,18 @@ create_mem_ref (block_stmt_iterator *bsi if (parts.symbol) { - tmp = build_addr (parts.symbol, current_function_decl); - gcc_assert (is_gimple_val (tmp)); + tmp = fold_convert (addr_type, + build_addr (parts.symbol, current_function_decl)); /* Add the symbol to base, eventually forcing it to register. */ if (parts.base) { - gcc_assert (TREE_TYPE (parts.base) == sizetype); - if (parts.index) - { - atype = TREE_TYPE (tmp); - parts.base = force_gimple_operand_bsi (bsi, - fold_build2 (PLUS_EXPR, atype, - fold_convert (atype, parts.base), + parts.base = force_gimple_operand_bsi (bsi, + fold_build2 (PLUS_EXPR, addr_type, + fold_convert (addr_type, parts.base), tmp), true, NULL_TREE); - } else { parts.index = parts.base;