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++/61080] Spurious no return statement warning with deleted operators


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61080

--- Comment #5 from Paolo Carlini <paolo.carlini at oracle dot com> ---
Thanks. Thus should we go back to the pre-r210043 behavior and somehow handle
the case in instantiate_decl under the early:

  if (/* If there is no definition, we cannot instantiate the
     template.  */
      ! pattern_defined
      /* If it's OK to postpone instantiation, do so.  */
      || defer_ok
      /* If this is a static data member that will be defined
     elsewhere, we don't want to instantiate the entire data
     member, but we do want to instantiate the initializer so that
     we can substitute that elsewhere.  */
      || (external_p && VAR_P (d)))
    {
      /* .... */

which does very few checks and then soon does goto out? The problem with
setting pattern_defined is that this entire early handling is skipped, not just
its inner permerror for explicit instantiations when no definition is
available. And by now we now that early handling otherwise works pretty well...


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