This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFA] expand from SSA form (1/2)
- From: Michael Matz <matz at suse dot de>
- To: David Edelsohn <dje dot gcc at gmail dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 27 Apr 2009 16:43:33 +0200 (CEST)
- Subject: Re: [RFA] expand from SSA form (1/2)
- References: <303e1d290904270711s4c3d9ec3k5c0307bd99b9c90@mail.gmail.com>
Hi,
On Mon, 27 Apr 2009, David Edelsohn wrote:
> A function in cgraphunit.c is being mis-compiled, probably
> build_cdtor(). This causes cgraph_build_static_cdtor() to be called
> with an invalid priority of "-1", instead of 65535. The priority should
> not be negative. This negative priority value generates an invalid
> global file function name:
> ...
> Both Darwin and AIX are bootstrapping in 32 bit mode. Richi suggested
> on IRC that this may be related to some known CONST_INT issue for
> which you already have a patch.
This confusion with the numbers seems indeed related to PR39922. If you
can test the below patch on powerpc that would be nice. I know that it
fixes the PR on i686-linux where something similar happens.
Ciao,
Michael.
--
PR middle-end/39922
* tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert constants.
Index: tree-outof-ssa.c
===================================================================
--- tree-outof-ssa.c (revision 146829)
+++ tree-outof-ssa.c (working copy)
@@ -184,7 +184,7 @@ insert_value_copy_on_edge (edge e, int d
start_sequence ();
mode = GET_MODE (SA.partition_to_pseudo[dest]);
x = expand_expr (src, SA.partition_to_pseudo[dest], mode, EXPAND_NORMAL);
- if (GET_MODE (x) != mode)
+ if (GET_MODE (x) != VOIDmode && GET_MODE (x) != mode)
x = convert_to_mode (mode, x, TYPE_UNSIGNED (TREE_TYPE (src)));
if (x != SA.partition_to_pseudo[dest])
emit_move_insn (SA.partition_to_pseudo[dest], x);