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.
This commit is contained in:
parent
b1c5afbb2f
commit
d096f2f5a8
@ -156,15 +156,6 @@
|
|||||||
* reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
|
* reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
|
||||||
instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
|
instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
|
||||||
|
|
||||||
2007-04-24 Richard Henderson <rth@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 <crowl@google.com> (r123909)
|
2007-04-16 Lawrence Crowl <crowl@google.com> (r123909)
|
||||||
|
|
||||||
* doc/invoke.texi (Debugging Options): Add documentation for the
|
* doc/invoke.texi (Debugging Options): Add documentation for the
|
||||||
@ -257,11 +248,6 @@
|
|||||||
* tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
|
* tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
|
||||||
the *_DIV_EXPR codes correctly with overflow infinities.
|
the *_DIV_EXPR codes correctly with overflow infinities.
|
||||||
|
|
||||||
2007-03-04 Zdenek Dvorak <dvorakz@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.rajagopal@amd.com> (r121763)
|
2007-02-09 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com> (r121763)
|
||||||
|
|
||||||
* config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
|
* config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
|
||||||
@ -438,11 +424,6 @@
|
|||||||
and amdfam10.
|
and amdfam10.
|
||||||
* doc/extend.texi: Add documentation for SSE4A builtins.
|
* doc/extend.texi: Add documentation for SSE4A builtins.
|
||||||
|
|
||||||
2007-02-01 Zdenek Dvorak <dvorakz@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 <jakub@redhat.com> (r121140)
|
2007-01-24 Jakub Jelinek <jakub@redhat.com> (r121140)
|
||||||
|
|
||||||
* config/i386/i386.h (x86_cmpxchg16b): Remove const.
|
* config/i386/i386.h (x86_cmpxchg16b): Remove const.
|
||||||
|
@ -314,12 +314,6 @@
|
|||||||
PR c++/30895
|
PR c++/30895
|
||||||
* tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
|
* tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
|
||||||
|
|
||||||
2007-03-02 Geoffrey Keating <geoffk@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 <simartin@users.sourceforge.net>
|
2007-02-22 Simon Martin <simartin@users.sourceforge.net>
|
||||||
|
|
||||||
PR c++/29475
|
PR c++/29475
|
||||||
|
@ -159,19 +159,11 @@ lang_specific_driver (int *in_argc, const char *const **in_argv,
|
|||||||
arg = "";
|
arg = "";
|
||||||
if (library == 0
|
if (library == 0
|
||||||
&& (strcmp (arg, "c++") == 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;
|
library = 1;
|
||||||
|
|
||||||
saw_speclang = 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,
|
/* Arguments that go directly to the linker might be .o files,
|
||||||
or something, and so might cause libstdc++ to be needed. */
|
or something, and so might cause libstdc++ to be needed. */
|
||||||
else if (strcmp (argv[i], "-Xlinker") == 0)
|
else if (strcmp (argv[i], "-Xlinker") == 0)
|
||||||
@ -245,6 +237,13 @@ lang_specific_driver (int *in_argc, const char *const **in_argv,
|
|||||||
if (quote)
|
if (quote)
|
||||||
fatal ("argument to '%s' missing\n", 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
|
/* There's no point adding -shared-libgcc if we don't have a shared
|
||||||
libgcc. */
|
libgcc. */
|
||||||
#ifndef ENABLE_SHARED_LIBGCC
|
#ifndef ENABLE_SHARED_LIBGCC
|
||||||
|
@ -1420,7 +1420,11 @@ __floatunditf (UDWtype u)
|
|||||||
#define F_MODE_OK(SIZE) \
|
#define F_MODE_OK(SIZE) \
|
||||||
(SIZE < DI_SIZE \
|
(SIZE < DI_SIZE \
|
||||||
&& SIZE > (DI_SIZE - SIZE + FSSIZE) \
|
&& 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)
|
#if defined(L_floatdisf)
|
||||||
#define FUNC __floatdisf
|
#define FUNC __floatdisf
|
||||||
#define FSTYPE SFtype
|
#define FSTYPE SFtype
|
||||||
@ -1511,21 +1515,13 @@ FUNC (DWtype u)
|
|||||||
hi = u >> shift;
|
hi = u >> shift;
|
||||||
|
|
||||||
/* If we lost any nonzero bits, set the lsb to ensure correct rounding. */
|
/* 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;
|
hi |= 1;
|
||||||
|
|
||||||
/* Convert the one word of data, and rescale. */
|
/* Convert the one word of data, and rescale. */
|
||||||
FSTYPE f = hi, e;
|
FSTYPE f = hi;
|
||||||
if (shift == W_TYPE_SIZE)
|
f *= (UDWtype)1 << shift;
|
||||||
e = Wtype_MAXp1_F;
|
return 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
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1536,7 +1532,11 @@ FUNC (DWtype u)
|
|||||||
#define F_MODE_OK(SIZE) \
|
#define F_MODE_OK(SIZE) \
|
||||||
(SIZE < DI_SIZE \
|
(SIZE < DI_SIZE \
|
||||||
&& SIZE > (DI_SIZE - SIZE + FSSIZE) \
|
&& 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)
|
#if defined(L_floatundisf)
|
||||||
#define FUNC __floatundisf
|
#define FUNC __floatundisf
|
||||||
#define FSTYPE SFtype
|
#define FSTYPE SFtype
|
||||||
@ -1620,21 +1620,13 @@ FUNC (UDWtype u)
|
|||||||
hi = u >> shift;
|
hi = u >> shift;
|
||||||
|
|
||||||
/* If we lost any nonzero bits, set the lsb to ensure correct rounding. */
|
/* 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;
|
hi |= 1;
|
||||||
|
|
||||||
/* Convert the one word of data, and rescale. */
|
/* Convert the one word of data, and rescale. */
|
||||||
FSTYPE f = hi, e;
|
FSTYPE f = hi;
|
||||||
if (shift == W_TYPE_SIZE)
|
f *= (UDWtype)1 << shift;
|
||||||
e = Wtype_MAXp1_F;
|
return 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
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -119,16 +119,10 @@ extern short int __get_eh_table_version (struct exception_descriptor *);
|
|||||||
|
|
||||||
/* FIXME: This #ifdef probably should be removed, ie. enable the test
|
/* FIXME: This #ifdef probably should be removed, ie. enable the test
|
||||||
for mips too. */
|
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__
|
#ifdef __powerpc__
|
||||||
#define AVOID_FP_TYPE_CONVERSION(SIZE) (SIZE == 106)
|
#define IS_IBM_EXTENDED(SIZE) (SIZE == 106)
|
||||||
#elif defined(WIDEST_HARDWARE_FP_SIZE)
|
|
||||||
#define AVOID_FP_TYPE_CONVERSION(SIZE) (SIZE > WIDEST_HARDWARE_FP_SIZE)
|
|
||||||
#else
|
#else
|
||||||
#define AVOID_FP_TYPE_CONVERSION(SIZE) 0
|
#define IS_IBM_EXTENDED(SIZE) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* In the first part of this file, we are interfacing to calls generated
|
/* In the first part of this file, we are interfacing to calls generated
|
||||||
|
@ -43,6 +43,13 @@ loop_optimizer_init (unsigned flags)
|
|||||||
struct loops *loops = XCNEW (struct loops);
|
struct loops *loops = XCNEW (struct loops);
|
||||||
edge e;
|
edge e;
|
||||||
edge_iterator ei;
|
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
|
/* Avoid annoying special cases of edges going to exit
|
||||||
block. */
|
block. */
|
||||||
|
@ -1948,11 +1948,6 @@ lang_dependent_init (const char *name)
|
|||||||
provide a dummy function context for them. */
|
provide a dummy function context for them. */
|
||||||
init_dummy_function_start ();
|
init_dummy_function_start ();
|
||||||
init_expr_once ();
|
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 ();
|
expand_dummy_function_end ();
|
||||||
|
|
||||||
/* If dbx symbol table desired, initialize writing it and output the
|
/* If dbx symbol table desired, initialize writing it and output the
|
||||||
|
@ -569,7 +569,7 @@ create_mem_ref (block_stmt_iterator *bsi, tree type,
|
|||||||
struct affine_tree_combination *addr)
|
struct affine_tree_combination *addr)
|
||||||
{
|
{
|
||||||
tree mem_ref, tmp;
|
tree mem_ref, tmp;
|
||||||
tree atype;
|
tree addr_type = build_pointer_type (type), atype;
|
||||||
struct mem_address parts;
|
struct mem_address parts;
|
||||||
|
|
||||||
addr_to_parts (addr, &parts);
|
addr_to_parts (addr, &parts);
|
||||||
@ -597,23 +597,18 @@ create_mem_ref (block_stmt_iterator *bsi, tree type,
|
|||||||
|
|
||||||
if (parts.symbol)
|
if (parts.symbol)
|
||||||
{
|
{
|
||||||
tmp = build_addr (parts.symbol, current_function_decl);
|
tmp = fold_convert (addr_type,
|
||||||
gcc_assert (is_gimple_val (tmp));
|
build_addr (parts.symbol, current_function_decl));
|
||||||
|
|
||||||
/* Add the symbol to base, eventually forcing it to register. */
|
/* Add the symbol to base, eventually forcing it to register. */
|
||||||
if (parts.base)
|
if (parts.base)
|
||||||
{
|
{
|
||||||
gcc_assert (TREE_TYPE (parts.base) == sizetype);
|
|
||||||
|
|
||||||
if (parts.index)
|
if (parts.index)
|
||||||
{
|
|
||||||
atype = TREE_TYPE (tmp);
|
|
||||||
parts.base = force_gimple_operand_bsi (bsi,
|
parts.base = force_gimple_operand_bsi (bsi,
|
||||||
fold_build2 (PLUS_EXPR, atype,
|
fold_build2 (PLUS_EXPR, addr_type,
|
||||||
fold_convert (atype, parts.base),
|
fold_convert (addr_type, parts.base),
|
||||||
tmp),
|
tmp),
|
||||||
true, NULL_TREE);
|
true, NULL_TREE);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parts.index = parts.base;
|
parts.index = parts.base;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user