This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/67831] Internal error on complicated constexpr initialization.


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

Mikhail Maltsev <miyuki at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-10-03
                 CC|                            |miyuki at gcc dot gnu.org
     Ever confirmed|0                           |1
      Known to fail|                            |6.0

--- Comment #1 from Mikhail Maltsev <miyuki at gcc dot gnu.org> ---
This also reproduces on x86_64 trunk. Probably related to PR 67398.

$ cat main2.cc
struct Task {
  struct TaskStaticData {
    constexpr TaskStaticData() {}
  } const &tsd;
  constexpr Task() : tsd(TaskStaticData()) {}
};

Task tasks{Task()};

$ cc1plus main2.cc 
main2.cc: In function 'void __static_initialization_and_destruction_0(int,
int)':
main2.cc:8:6: internal compiler error: in make_decl_rtl, at varasm.c:1306
 Task tasks{Task()};
      ^
0xf5c1d5 make_decl_rtl(tree_node*)
        /home/miyuki/gcc/src/gcc/varasm.c:1302
0x9d4378 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        /home/miyuki/gcc/src/gcc/expr.c:9550
0x9de576 expand_expr
        /home/miyuki/gcc/src/gcc/expr.h:255
0x9de576 expand_expr_addr_expr_1
        /home/miyuki/gcc/src/gcc/expr.c:7601
0x9d2931 expand_expr_addr_expr
        /home/miyuki/gcc/src/gcc/expr.c:7721
0x9d2931 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        /home/miyuki/gcc/src/gcc/expr.c:10709
0x9df24f store_expr_with_bounds(tree_node*, rtx_def*, int, bool, tree_node*)
        /home/miyuki/gcc/src/gcc/expr.c:5399
0x9e1825 expand_assignment(tree_node*, tree_node*, bool)
        /home/miyuki/gcc/src/gcc/expr.c:5171
0x8d3358 expand_gimple_stmt_1
        /home/miyuki/gcc/src/gcc/cfgexpand.c:3584
0x8d3358 expand_gimple_stmt
        /home/miyuki/gcc/src/gcc/cfgexpand.c:3680
0x8d5906 expand_gimple_basic_block
        /home/miyuki/gcc/src/gcc/cfgexpand.c:5684
0x8dbee6 execute
        /home/miyuki/gcc/src/gcc/cfgexpand.c:6296
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

clang++ -S -std=c++11 main2.cc 
main2.cc:5:26: warning: binding reference member 'tsd' to a temporary value
[-Wdangling-field]
  constexpr Task() : tsd(TaskStaticData()) {}
                         ^~~~~~~~~~~~~~~~
main2.cc:4:12: note: reference member declared here
  } const &tsd;
           ^
1 warning generated.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]