Bug 55423 - internal compiler error: tree check: expected string_cst, have error_mark in finish_static_assert, at cp/semantics.c:5170
Summary: internal compiler error: tree check: expected string_cst, have error_mark in ...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.8.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-11-21 05:29 UTC by Jason
Modified: 2012-11-21 10:39 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jason 2012-11-21 05:29:57 UTC
I get the following output:
Using built-in specs.
COLLECT_GCC=/afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/g++
COLLECT_LTO_WRAPPER=/afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.8.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --prefix=/afs/csail/proj/courses/6.172/gcc-cilkplus --enable-languages=c,c++
Thread model: posix
gcc version 4.8.0 20120618 (experimental) (GCC)
COLLECT_GCC_OPTIONS='-std=c++11' '-v' '-save-temps' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.8.0/cc1plus -E -quiet -v -iprefix /afs/cs\
ail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.0/ -D_GNU_SOURCE main.cpp -mtune=generic -march=x86\
-64 -std=c++11 -fpch-preprocess -o main.ii
ignoring nonexistent directory "/afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.0/../../../.\
./x86_64-unknown-linux-gnu/include"
ignoring duplicate directory "/afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.8.\
0/../../../../include/c++/4.8.0"
ignoring duplicate directory "/afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.8.\
0/../../../../include/c++/4.8.0/x86_64-unknown-linux-gnu"
ignoring duplicate directory "/afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.8.\
0/../../../../include/c++/4.8.0/backward"
ignoring duplicate directory "/afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.8.\
0/include"
ignoring duplicate directory "/afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.8.\
0/include-fixed"
ignoring nonexistent directory "/afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/../../lib/gcc/x86_64-unknown-linux-gnu/4.\
8.0/../../../../x86_64-unknown-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /opt/intel/composer_xe_2013.0.079/mkl/include
 /opt/intel/composer_xe_2013.0.079/tbb/include
 /afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.0/../../../../include/c++/4.8.0
 /afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.0/../../../../include/c++/4.8.0/x86_64-unkn\
own-linux-gnu
 /afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.0/../../../../include/c++/4.8.0/backward
 /afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.0/include
 /afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.0/include-fixed
 /usr/local/include
 /afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../lib/gcc/../../include
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-std=c++11' '-v' '-save-temps' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /afs/csail.mit.edu/proj/courses/6.172/gcc-cilkplus/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.8.0/cc1plus -fpreprocessed main.ii -quiet\
 -dumpbase main.cpp -mtune=generic -march=x86-64 -auxbase main -std=c++11 -version -o main.s
GNU C++ (GCC) version 4.8.0 20120618 (experimental) (x86_64-unknown-linux-gnu)
        compiled by GNU C version 4.8.0 20120618 (experimental), GMP version 5.0.2, MPFR version 3.1.0, MPC version 0.9
warning: GMP header version 5.0.2 differs from library version 4.3.2.
warning: MPFR header version 3.1.0 differs from library version 3.0.0-p3.
warning: MPC header version 0.9 differs from library version 0.8.2.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C++ (GCC) version 4.8.0 20120618 (experimental) (x86_64-unknown-linux-gnu)
        compiled by GNU C version 4.8.0 20120618 (experimental), GMP version 5.0.2, MPFR version 3.1.0, MPC version 0.9
warning: GMP header version 5.0.2 differs from library version 4.3.2.
warning: MPFR header version 3.1.0 differs from library version 3.0.0-p3.
warning: MPC header version 0.9 differs from library version 0.8.2.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 9140df29c77763bd28b47359117a6952
main.cpp:5:82: error: both ‘const’ and ‘constexpr’ cannot be used here
 struct display_non_zero_int_value<0> { static constexpr const char * const foo = "value must be zero"; };
                                                                                  ^
main.cpp:9:23: error: expected string-literal before ‘display_non_zero_int_value’
 static_assert(v == 0, display_non_zero_int_value<v>::foo);
                       ^
main.cpp:9:23: error: expected ‘)’ before ‘display_non_zero_int_value’
main.cpp:9:1: internal compiler error: tree check: expected string_cst, have error_mark in finish_static_assert, at cp/semantics.c:5170
 static_assert(v == 0, display_non_zero_int_value<v>::foo);
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.


on the code


template <int v>
struct display_non_zero_int_value;

template <>
struct display_non_zero_int_value<0> { static constexpr const char * const foo = "value must be zero"; };

static constexpr int v = 1;

static_assert(v == 0, display_non_zero_int_value<v>::foo);
Comment 1 Jakub Jelinek 2012-11-21 10:39:31 UTC
Should be fixed by http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=190182 .