For simplicity, add a gate on !processing_template_decl to cp_tree::maybe_add_location_wrapper.
gcc/cp/ChangeLog: * cp-tree.h (cp_expr::maybe_add_location_wrapper): Do nothing if processing_template_decl. --- gcc/cp/cp-tree.h | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 03087f0..63e9bff 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -93,11 +93,7 @@ public: set_location (make_location (m_loc, start, finish)); } - cp_expr& maybe_add_location_wrapper () - { - m_value = maybe_wrap_with_location (m_value, m_loc); - return *this; - } + cp_expr& maybe_add_location_wrapper (); private: tree m_value; @@ -1642,6 +1638,16 @@ struct warning_sentinel ~warning_sentinel() { flag = val; } }; +inline cp_expr& +cp_expr::maybe_add_location_wrapper () +{ + /* For now, don't add wrappers when processing template decls. */ + if (!processing_template_decl) + m_value = maybe_wrap_with_location (m_value, m_loc); + return *this; +} + + /* The cached class binding level, from the most recently exited class, or NULL if none. */ -- 1.8.5.3