http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60267
Bug ID: 60267 Summary: ICE in c_pp_lookup_pragma, at c-family/c-pragma.c:1232; ICE in tsubst_copy, at cp/pt.c:12887 Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: slayoo at staszic dot waw.pl Hi All, The Blitz++ library (http://sf.net/projects/blitz) contains some "#pragma ivdep" macros intended for the Intel C++ compiler. Having learnt that GCC now supports a corresponding "GCC ivdep" pragma, I've tried changing all occurances of pragma ivdep in Blitz++ with the GCC ones (encapsulating them in some define-checks to detect the compiler). Trying then just to parse the include files with: #define BZ_USE_ALIGNMENT_PRAGMAS #include <blitz/array-impl.h> int main() {} using the Debian's gcc-snapshot (20140212) I've got an ICE: ************************************************************************************** In file included from /usr/include/blitz/globeval.cc:34:0, from /usr/include/blitz/array/ops.cc:38, from /usr/include/blitz/array.cc:13, from /usr/include/blitz/array-impl.h:2559, from bug.cpp:2: /usr/include/blitz/tvevaluate.h: In instantiation of 'static void blitz::_tv_evaluator<unroll, N_length>::evaluate_aligned(T_numtype*, const T_expr&, T_update) [with T_numtype = bool; T_expr = blitz::_bz_ArrayExpr<blitz::_bz_ArrayExprConstant<bool> >; T_update = blitz::_bz_update<bool, bool>; bool unroll = false; int N_length = 1]': /usr/include/blitz/tvevaluate.h:88:85: required from 'static void blitz::_tv_evaluator<unroll, N_length>::select_evaluation(blitz::TinyVector<T_numtype2, N_length>&, const T_expr&, T_update) [with T = bool; T_expr = blitz::_bz_ArrayExpr<blitz::_bz_ArrayExprConstant<bool> >; T_update = blitz::_bz_update<bool, bool>; bool unroll = false; int N_length = 1]' /usr/include/blitz/tvevaluate.h:195:81: required from 'void blitz::TinyVector<T, N>::_tv_evaluate(const T_expr&, T_update) [with T_expr = blitz::_bz_ArrayExpr<blitz::_bz_ArrayExprConstant<bool> >; T_update = blitz::_bz_update<bool, bool>; P_numtype = bool; int N_length = 1]' /usr/include/blitz/tinyvec2.cc:89:57: required from 'blitz::TinyVector<T, N>& blitz::TinyVector<T, N>::operator=(const blitz::ETBase<T_expr>&) [with T_expr = blitz::_bz_ArrayExpr<blitz::_bz_ArrayExprConstant<bool> >; P_numtype = bool; int N_length = 1]' /usr/include/blitz/tinyvec2.cc:77:13: required from 'blitz::TinyVector<T, N>& blitz::TinyVector<T, N>::initialize(blitz::TinyVector<T, N>::T_numtype) [with P_numtype = bool; int N_length = 1; blitz::TinyVector<T, N>::T_numtype = bool]' /usr/include/blitz/listinit.h:90:13: required from 'blitz::ListInitializationSwitch<T_array, T_iterator>::~ListInitializationSwitch() [with T_array = blitz::TinyVector<bool, 1>; T_iterator = bool*]' /usr/include/blitz/array/storage.h:93:24: required from 'blitz::GeneralArrayStorage<N_rank>::GeneralArrayStorage(blitz::paddingPolicy) [with int N_rank = 1]' /usr/include/blitz/array/storage.h:228:47: required from here /usr/include/blitz/tvevaluate.h:108:17: internal compiler error: in tsubst_copy, at cp/pt.c:12887 for (int i=0; i < N_length; ++i) ^ Please submit a full bug report, ************************************************************************************** Trying to better prepare the bug report and executing gcc with "-save-temps" results in another ICE: ************************************************************************************** In file included from /usr/include/blitz/globeval.cc:34:0, from /usr/include/blitz/array/ops.cc:38, from /usr/include/blitz/array.cc:13, from /usr/include/blitz/array-impl.h:2559, from bug.cpp:2: /usr/include/blitz/tvevaluate.h:38:0: internal compiler error: in c_pp_lookup_pragma, at c-family/c-pragma.c:1232 ^ Please submit a full bug report, ************************************************************************************** How to best help in tracking those down? Sylwester