https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66962
Jason Merrill <jason at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2015-07-23 Ever confirmed|0 |1 --- Comment #8 from Jason Merrill <jason at gcc dot gnu.org> --- (In reply to Casey Carter from comment #5) > (In reply to Markus Trippelsdorf from comment #2) > > /usr/local/gcc-concepts/include/c++/6.0.0/initializer_list:47:11: fatal > > error: definition of std::initializer_list does not match #include > > <initializer_list> > > This is because the definition of std::initializer_list in the preprocessed > source doesn't agree with your compiler's - or mine - notion of what > std::initializer_list should be. The issue is just 32-bit vs 64-bit size_t. I'm able to reproduce the bug with the original testcase using the -m32 flag. The testcase in comment #7 has different requirements on iter_swap2, so it doesn't run into this bug. It was crashing because my recent patch needed an additional NULL check, which I have now added. The problem in Eric's testcases seems to be that decompose_assumptions is consuming an extreme amount of memory, I think because left_disjunction causes the process to have quadratic complexity. So I think we need an algorithmic change here. Andrew?