Patchwork Re-write LTO type merging again, do tree merging

login
register
mail settings
Submitter Richard Guenther
Date June 18, 2013, 9:59 a.m.
Message ID <alpine.LNX.2.00.1306181159050.22313@zhemvz.fhfr.qr>
Download mbox | patch
Permalink /patch/252212/
State New
Headers show

Comments

Richard Guenther - June 18, 2013, 9:59 a.m.
On Mon, 17 Jun 2013, Andi Kleen wrote:

> 
> Current trunk cannot build LTO kernels now, with your patch, 
> as reported earlier.
> 
> Please fix ASAP. I'm surprised that you checked in a patchkit
> with such serious reported problems.
> 
> -Andi
> 
> 
> backup/lsrc/git/linux-lto-2.6/lib/decompress_unlzo.c: In function 'unlzo':
> /backup/lsrc/git/linux-lto-2.6/lib/decompress_unlzo.c:79:8: internal compiler error: in expand_expr_real_1, at expr.c:9361
>   parse += 7;
>         ^
> 0x5ea175 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**)
>         ../../gcc/gcc/expr.c:9356

That suggests


might fix it.

Richard.
Andi Kleen - June 18, 2013, 4:17 p.m.
> That suggests
> 
> Index: gcc/expr.c
> ===================================================================
> --- gcc/expr.c  (revision 200164)
> +++ gcc/expr.c  (working copy)
> @@ -9353,7 +9353,7 @@ expand_expr_real_1 (tree exp, rtx target
>        /* Variables inherited from containing functions should have
>          been lowered by this point.  */
>        context = decl_function_context (exp);
> -      gcc_assert (!context
> +      gcc_assert (SCOPE_FILE_SCOPE_P (context)
>                   || context == current_function_decl
>                   || TREE_STATIC (exp)
>                   || DECL_EXTERNAL (exp)
> 
> might fix it.

Just confirmed with the small build. It does. Running the large build 
now.

Please check in.

-Andi
Andi Kleen - June 18, 2013, 6:04 p.m.
> Just confirmed with the small build. It does. Running the large build 
> now.

Large build worked too.
> 
> Please check in.
Andi Kleen - June 18, 2013, 8:37 p.m.
On Tue, Jun 18, 2013 at 08:04:15PM +0200, Andi Kleen wrote:
> > Just confirmed with the small build. It does. Running the large build 
> > now.
> 
> Large build worked too.

Also it seems to be drastically faster. I haven't done a proper 
measurement run, but the initial run was 58% faster than 4.8,
using 42% less peak RSS.

-Andi
Richard Guenther - June 19, 2013, 8:16 a.m.
On Tue, 18 Jun 2013, Andi Kleen wrote:

> On Tue, Jun 18, 2013 at 08:04:15PM +0200, Andi Kleen wrote:
> > > Just confirmed with the small build. It does. Running the large build 
> > > now.
> > 
> > Large build worked too.
> 
> Also it seems to be drastically faster. I haven't done a proper 
> measurement run, but the initial run was 58% faster than 4.8,
> using 42% less peak RSS.

That was the intent.  As a side-effect it should also behave
correctly and not have weird effects on dwarf2out.c expectations.

Richard.

Patch

Index: gcc/expr.c
===================================================================
--- gcc/expr.c  (revision 200164)
+++ gcc/expr.c  (working copy)
@@ -9353,7 +9353,7 @@  expand_expr_real_1 (tree exp, rtx target
       /* Variables inherited from containing functions should have
         been lowered by this point.  */
       context = decl_function_context (exp);
-      gcc_assert (!context
+      gcc_assert (SCOPE_FILE_SCOPE_P (context)
                  || context == current_function_decl
                  || TREE_STATIC (exp)
                  || DECL_EXTERNAL (exp)