[PATCH] D30375: Function with unparsed body is a definition

Serge Pavlov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 21 05:51:24 PDT 2017


sepavloff added a comment.

Initial commit (r305379) was reverted (r305381) because it broke self builds. The reason was not related to the WillHaveBody flag but was due to the change:

  if (isFriend) {
    Function->setObjectOfFriendDecl();
    if (FunctionTemplate)
      FunctionTemplate->setObjectOfFriendDecl();
  }

Attempt to execute `FunctionTemplate->setObjectOfFriendDecl()` caused assertion violation because the declaration had `IDNS_NonMemberOperator` in its IdentifierNamespace. There is nothing wrong with this flag, `setObjectOfFriendDecl` must be updated accordingly. This is however a problem of friend function templates, it will be addressed in other patch. For now the call to  `setObjectOfFriendDecl` is made as previously, with the exception that it is called for `Function` prior to call to `CheckFunctionDeclaration`, as it is necessary for proper diagnostics.


Repository:
  rL LLVM

https://reviews.llvm.org/D30375





More information about the cfe-commits mailing list