https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79205

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.

Breakpoint 1, fancy_abort (
    file=0x1e2fb90 "/space/rguenther/src/svn/gcc-7-branch/gcc/gimple-expr.c", 
    line=473, 
    function=0x1e2fd73 <create_tmp_var(tree_node*, char const*)::__FUNCTION__>
"create_tmp_var") at
/space/rguenther/src/svn/gcc-7-branch/gcc/diagnostic.c:1461
1461      internal_error ("in %s, at %s:%d", function, trim_filename (file),
line);
Missing separate debuginfos, use: zypper install
libgmp10-debuginfo-5.1.3-5.46.x86_64 libisl15-debuginfo-0.16.1-30.30.x86_64
libmpc3-debuginfo-1.0.2-4.55.x86_64 libmpfr4-debuginfo-3.1.2-11.53.x86_64
(gdb) up
#1  0x0000000000ddb5da in create_tmp_var (type=
    <record_type 0x7ffff575d1f8 tuple>, prefix=0x0)
    at /space/rguenther/src/svn/gcc-7-branch/gcc/gimple-expr.c:473
473       gcc_assert (!TREE_ADDRESSABLE (type) && COMPLETE_TYPE_P (type));
(gdb) p debug_tree (type)
 <record_type 0x7ffff575d1f8 tuple sizes-gimplified addressable
needs-constructing type_1 type_5 type_6 BLK
    size <integer_cst 0x7ffff68c4108 type <integer_type 0x7ffff68c10a8
bitsizetype> constant 32>

gimplifying **t in

;; Function int foo(std::tuple<int>) (null)
;; enabled by -tree-original

{
  struct tuple D.33733 = **t;
  type & x0;

    struct tuple D.33733 = **t;
    type & x0;
  <<cleanup_point <<< Unknown tree: expr_stmt
  (void) (x0 = (type &) std::get<0, int> ((struct tuple &) &D.33733)) >>>>>;
  return <retval> = *x0;
}


gcc 6 rejects this with

t.C: In function ‘int foo(std::tuple<int>)’:
t.C:5:8: error: expected unqualified-id before ‘[’ token
   auto [x0] = t;
        ^
t.C:6:12: error: ‘x0’ was not declared in this scope
     return x0;
            ^~

Reply via email to