On 21 March 2017 at 16:54, Bill Schmidt <wschm...@linux.vnet.ibm.com> wrote:
> On Mar 21, 2017, at 10:18 AM, Christophe Lyon <christophe.l...@linaro.org> 
> wrote:
>>
>> Since this was committed (r246319), I've noticed that
>> GCC cross-compiler fails to build glibc for target aarch64-linux-gnu.
>>
>> I'm seeing:
>> In function '_IO_vfscanf_internal':
>> cc1: internal compiler error: in gimplify_modify_expr, at gimplify.c:5627
>> 0x8ae5bf gimplify_modify_expr
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:5627
>> 0x8902b4 gimplify_expr(tree_node**, gimple**, gimple**, bool
>> (*)(tree_node*), int)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:11198
>> 0x8963c8 gimplify_stmt(tree_node**, gimple**)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:6477
>> 0x89bf55 gimplify_cond_expr
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:3971
>> 0x890273 gimplify_expr(tree_node**, gimple**, gimple**, bool
>> (*)(tree_node*), int)
>>        /tmp/1882393_6.tmpdir/aci-In function '_IO_vfscanf_internal':
>> cc1: internal compiler error: in gimplify_modify_expr, at gimplify.c:5627
>> 0x8ae5bf gimplify_modify_expr
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:5627
>> 0x8902b4 gimplify_expr(tree_node**, gimple**, gimple**, bool
>> (*)(tree_node*), int)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:11198
>> 0x8963c8 gimplify_stmt(tree_node**, gimple**)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:6477
>> 0x89bf55 gimplify_cond_expr
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:3971
>> 0x890273 gimplify_expr(tree_node**, gimple**, gimple**, bool
>> (*)(tree_node*), int)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:11154
>> 0x8963c8 gimplify_stmt(tree_node**, gimple**)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:6477
>> 0x89b803 gimplify_cond_expr
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:3864
>> 0x890273 gimplify_expr(tree_node**, gimple**, gimple**, bool
>> (*)(tree_node*), int)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:11154
>> 0x89328f gimplify_expr(tree_node**, gimple**, gimple**, bool
>> (*)(tree_node*), int)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:11356
>> 0x8b49f9 force_gimple_operand_1(tree_node*, gimple**, bool
>> (*)(tree_node*), tree_node*)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify-me.c:78
>> 0xda0f16 expand_ifn_va_arg_1
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/tree-stdarg.c:1064
>> 0xda0f16 expand_ifn_va_arg
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/tree-stdarg.c:1105
>> 0xda494b execute
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/tree-stdarg.c:1158
>> gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:11154
>> 0x8963c8 gimplify_stmt(tree_node**, gimple**)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:6477
>> 0x89b803 gimplify_cond_expr
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:3864
>> 0x890273 gimplify_expr(tree_node**, gimple**, gimple**, bool
>> (*)(tree_node*), int)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:11154
>> 0x89328f gimplify_expr(tree_node**, gimple**, gimple**, bool
>> (*)(tree_node*), int)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify.c:11356
>> 0x8b49f9 force_gimple_operand_1(tree_node*, gimple**, bool
>> (*)(tree_node*), tree_node*)
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/gimplify-me.c:78
>> 0xda0f16 expand_ifn_va_arg_1
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/tree-stdarg.c:1064
>> 0xda0f16 expand_ifn_va_arg
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/tree-stdarg.c:1105
>> 0xda494b execute
>>        
>> /tmp/1882393_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/tree-stdarg.c:1158
>>
>>
>> I can start a manual build if you need a .i file.
>
> Yes, please!  Please open a PR for tracking and CC me (wschm...@gcc.gnu.org); 
> I'll investigate.
>
OK, I've filed PR 80136.

Thanks,

Christophe

> Bill
>
>>
>> Thanks,
>>
>> Christophe
>>
>>> Thanks,
>>> Richard.
>>>
>>>> Thanks,
>>>> Bill
>>>>
>>>>
>>>> [gcc]
>>>>
>>>> 2017-03-20  Bill Schmidt  <wschm...@linux.vnet.ibm.com>
>>>>            Richard Biener  <rgue...@suse.com>
>>>>
>>>>        PR tree-optimization/79908
>>>>        * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
>>>>        been cast away, use force_gimple_operand to construct the side
>>>>        effects.
>>>>
>>>> [gcc/testsuite]
>>>>
>>>> 2017-03-20  Bill Schmidt  <wschm...@linux.vnet.ibm.com>
>>>>            Richard Biener  <rguent...@suse.de>
>>>>
>>>>        PR tree-optimization/79908
>>>>        * gcc.dg/torture/pr79908.c: New file.
>>>>
>>>>
>>>> Index: gcc/testsuite/gcc.dg/torture/pr79908.c
>>>> ===================================================================
>>>> --- gcc/testsuite/gcc.dg/torture/pr79908.c      (nonexistent)
>>>> +++ gcc/testsuite/gcc.dg/torture/pr79908.c      (working copy)
>>>> @@ -0,0 +1,12 @@
>>>> +/* { dg-do compile } */
>>>> +
>>>> +/* Used to fail in the stdarg pass before fix for PR79908.  */
>>>> +
>>>> +typedef __builtin_va_list __gnuc_va_list;
>>>> +typedef __gnuc_va_list va_list;
>>>> +
>>>> +void testva (int n, ...)
>>>> +{
>>>> +  va_list ap;
>>>> +  _Complex int i = __builtin_va_arg (ap, _Complex int);
>>>> +}
>>>> Index: gcc/tree-stdarg.c
>>>> ===================================================================
>>>> --- gcc/tree-stdarg.c   (revision 246286)
>>>> +++ gcc/tree-stdarg.c   (working copy)
>>>> @@ -33,6 +33,7 @@ along with GCC; see the file COPYING3.  If not see
>>>> #include "gimple-iterator.h"
>>>> #include "gimple-walk.h"
>>>> #include "gimplify.h"
>>>> +#include "gimplify-me.h"
>>>> #include "tree-into-ssa.h"
>>>> #include "tree-cfg.h"
>>>> #include "tree-stdarg.h"
>>>> @@ -1058,12 +1059,16 @@ expand_ifn_va_arg_1 (function *fun)
>>>>            gimplify_assign (lhs, expr, &pre);
>>>>          }
>>>>        else
>>>> -         gimplify_expr (&expr, &pre, &post, is_gimple_lvalue, fb_lvalue);
>>>> +         {
>>>> +           gimple_seq tmp_seq;
>>>> +           force_gimple_operand (expr, &tmp_seq, false, NULL_TREE);
>>>> +           gimple_seq_add_seq_without_update (&pre, tmp_seq);
>>>> +         }
>>>>
>>>>        input_location = saved_location;
>>>>        pop_gimplify_context (NULL);
>>>>
>>>> -       gimple_seq_add_seq (&pre, post);
>>>> +       gimple_seq_add_seq_without_update (&pre, post);
>>>>        update_modified_stmts (pre);
>>>>
>>>>        /* Add the sequence after IFN_VA_ARG.  This splits the bb right
>>>> @@ -1072,11 +1077,10 @@ expand_ifn_va_arg_1 (function *fun)
>>>>        gimple_find_sub_bbs (pre, &i);
>>>>
>>>>        /* Remove the IFN_VA_ARG gimple_call.  It's the last stmt in the
>>>> -          bb.  */
>>>> +          bb if we added any stmts.  */
>>>>        unlink_stmt_vdef (stmt);
>>>>        release_ssa_name_fn (fun, gimple_vdef (stmt));
>>>>        gsi_remove (&i, true);
>>>> -       gcc_assert (gsi_end_p (i));
>>>>
>>>>        /* We're walking here into the bbs which contain the expansion of
>>>>           IFN_VA_ARG, and will not contain another IFN_VA_ARG that needs
>>>>
>>
>

Reply via email to