Author: pfg Date: Mon Dec 30 02:52:43 2013 New Revision: 260073 URL: http://svnweb.freebsd.org/changeset/base/260073
Log: gcc: small diff reduction wrt gcc43 and Apple GCC. Obtained from: gcc 4.3 (rev. 121464, 122528, 124106; GPLv2) MFC after: 3 weeks 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 Mon Dec 30 02:19:48 2013 (r260072) +++ head/contrib/gcc/ChangeLog.gcc43 Mon Dec 30 02:52:43 2013 (r260073) @@ -156,6 +156,15 @@ * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction. +2007-04-24 Richard Henderson <r...@redhat.com> (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 <cr...@google.com> (r123909) * doc/invoke.texi (Debugging Options): Add documentation for the @@ -248,6 +257,11 @@ * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and the *_DIV_EXPR codes correctly with overflow infinities. +2007-03-04 Zdenek Dvorak <dvor...@suse.cz> (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 <dwarak.rajago...@amd.com> (r121763) * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10. @@ -424,6 +438,11 @@ and amdfam10. * doc/extend.texi: Add documentation for SSE4A builtins. +2007-02-01 Zdenek Dvorak <dvor...@suse.cz> (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 <ja...@redhat.com> (r121140) * config/i386/i386.h (x86_cmpxchg16b): Remove const. Modified: head/contrib/gcc/cp/ChangeLog ============================================================================== --- head/contrib/gcc/cp/ChangeLog Mon Dec 30 02:19:48 2013 (r260072) +++ head/contrib/gcc/cp/ChangeLog Mon Dec 30 02:52:43 2013 (r260073) @@ -314,6 +314,12 @@ PR c++/30895 * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees. +2007-03-02 Geoffrey Keating <geo...@apple.com> (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 <simar...@users.sourceforge.net> PR c++/29475 Modified: head/contrib/gcc/cp/g++spec.c ============================================================================== --- head/contrib/gcc/cp/g++spec.c Mon Dec 30 02:19:48 2013 (r260072) +++ head/contrib/gcc/cp/g++spec.c Mon Dec 30 02:52:43 2013 (r260073) @@ -159,11 +159,19 @@ lang_specific_driver (int *in_argc, cons arg = ""; if (library == 0 && (strcmp (arg, "c++") == 0 - || strcmp (arg, "c++-cpp-output") == 0)) + || strcmp (arg, "c++-cpp-output") == 0 + || strcmp (arg, "objective-c++") == 0 + || strcmp (arg, "objective-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) @@ -237,13 +245,6 @@ 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 Mon Dec 30 02:19:48 2013 (r260072) +++ head/contrib/gcc/libgcc2.c Mon Dec 30 02:52:43 2013 (r260073) @@ -1420,11 +1420,7 @@ __floatunditf (UDWtype u) #define F_MODE_OK(SIZE) \ (SIZE < DI_SIZE \ && SIZE > (DI_SIZE - SIZE + FSSIZE) \ - /* 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)) + && !AVOID_FP_TYPE_CONVERSION(SIZE)) #if defined(L_floatdisf) #define FUNC __floatdisf #define FSTYPE SFtype @@ -1515,13 +1511,21 @@ FUNC (DWtype u) hi = u >> shift; /* If we lost any nonzero bits, set the lsb to ensure correct rounding. */ - if (u & (((DWtype)1 << shift) - 1)) + if ((UWtype)u << (W_TYPE_SIZE - shift)) hi |= 1; /* Convert the one word of data, and rescale. */ - FSTYPE f = hi; - f *= (UDWtype)1 << shift; - return f; + 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; #endif } #endif @@ -1532,11 +1536,7 @@ FUNC (DWtype u) #define F_MODE_OK(SIZE) \ (SIZE < DI_SIZE \ && SIZE > (DI_SIZE - SIZE + FSSIZE) \ - /* 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)) + && !AVOID_FP_TYPE_CONVERSION(SIZE)) #if defined(L_floatundisf) #define FUNC __floatundisf #define FSTYPE SFtype @@ -1620,13 +1620,21 @@ FUNC (UDWtype u) hi = u >> shift; /* If we lost any nonzero bits, set the lsb to ensure correct rounding. */ - if (u & (((UDWtype)1 << shift) - 1)) + if ((UWtype)u << (W_TYPE_SIZE - shift)) hi |= 1; /* Convert the one word of data, and rescale. */ - FSTYPE f = hi; - f *= (UDWtype)1 << shift; - return f; + 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; #endif } #endif Modified: head/contrib/gcc/libgcc2.h ============================================================================== --- head/contrib/gcc/libgcc2.h Mon Dec 30 02:19:48 2013 (r260072) +++ head/contrib/gcc/libgcc2.h Mon Dec 30 02:52:43 2013 (r260073) @@ -119,10 +119,16 @@ 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 IS_IBM_EXTENDED(SIZE) (SIZE == 106) +#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) #else -#define IS_IBM_EXTENDED(SIZE) 0 +#define AVOID_FP_TYPE_CONVERSION(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 Mon Dec 30 02:19:48 2013 (r260072) +++ head/contrib/gcc/loop-init.c Mon Dec 30 02:52:43 2013 (r260073) @@ -43,13 +43,6 @@ 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 Mon Dec 30 02:19:48 2013 (r260072) +++ head/contrib/gcc/toplev.c Mon Dec 30 02:52:43 2013 (r260073) @@ -1948,6 +1948,11 @@ 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 Mon Dec 30 02:19:48 2013 (r260072) +++ head/contrib/gcc/tree-ssa-address.c Mon Dec 30 02:52:43 2013 (r260073) @@ -569,7 +569,7 @@ create_mem_ref (block_stmt_iterator *bsi struct affine_tree_combination *addr) { tree mem_ref, tmp; - tree addr_type = build_pointer_type (type), atype; + tree atype; struct mem_address parts; addr_to_parts (addr, &parts); @@ -597,18 +597,23 @@ create_mem_ref (block_stmt_iterator *bsi if (parts.symbol) { - tmp = fold_convert (addr_type, - build_addr (parts.symbol, current_function_decl)); + tmp = build_addr (parts.symbol, current_function_decl); + gcc_assert (is_gimple_val (tmp)); /* Add the symbol to base, eventually forcing it to register. */ if (parts.base) { + gcc_assert (TREE_TYPE (parts.base) == sizetype); + if (parts.index) - parts.base = force_gimple_operand_bsi (bsi, - fold_build2 (PLUS_EXPR, addr_type, - fold_convert (addr_type, parts.base), + { + atype = TREE_TYPE (tmp); + parts.base = force_gimple_operand_bsi (bsi, + fold_build2 (PLUS_EXPR, atype, + fold_convert (atype, parts.base), tmp), true, NULL_TREE); + } else { parts.index = parts.base; _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"