diff --git a/src/qdoc/cppcodemarker.cpp b/src/qdoc/cppcodemarker.cpp
index cdaecebd9072396d38ccdeefc647315ef65de6bb..5bd64ca87a9b9db73619b53d8935dc303e47feb3 100644
--- a/src/qdoc/cppcodemarker.cpp
+++ b/src/qdoc/cppcodemarker.cpp
@@ -678,7 +678,7 @@ QList<Section> CppCodeMarker::sections(const Aggregate *inner,
                     FunctionNode *func = static_cast<FunctionNode *>(*r);
                     if (func->isMacro())
                         insert(macros, *r, style, status);
-                    else
+                    else if (!func->isSharingComment())
                         insert(relatedNonMembers, *r, style, status);
                 }
                 else {
@@ -700,8 +700,10 @@ QList<Section> CppCodeMarker::sections(const Aggregate *inner,
                         insert(memberVariables, *c, style, status);
                 } else if ((*c)->isFunction()) {
                     FunctionNode *function = static_cast<FunctionNode *>(*c);
-                    if (!function->hasAssociatedProperties() || !function->doc().isEmpty())
-                        insert(memberFunctions, function, style, status);
+                    if (!function->isSharingComment()) {
+                        if (!function->hasAssociatedProperties() || !function->doc().isEmpty())
+                            insert(memberFunctions, function, style, status);
+                    }
                 } else if ((*c)->isSharedCommentNode()) {
                     SharedCommentNode *scn = static_cast<SharedCommentNode *>(*c);
                     if (!scn->doc().isEmpty())
diff --git a/src/qdoc/generator.cpp b/src/qdoc/generator.cpp
index 24dff3ed62bebeb518c091687cc11baf510a3a40..8d088b13f80780a6a5b62ecde3fe740fd4107830 100644
--- a/src/qdoc/generator.cpp
+++ b/src/qdoc/generator.cpp
@@ -781,7 +781,7 @@ void Generator::generateBody(const Node *node, CodeMarker *marker)
             quiet = true;
         }
     }
-    if (node->doc().isEmpty()) {
+    if (!node->hasDoc() && !node->hasSharedDoc()) {
         /*
           Test for special function, like a destructor or copy constructor,
           that has no documentation.
@@ -863,7 +863,7 @@ void Generator::generateBody(const Node *node, CodeMarker *marker)
                 node->location().warning(tr("No documentation for '%1'").arg(node->plainSignature()));
         }
     }
-    else {
+    else if (!node->isSharingComment()) {
         if (node->type() == Node::Function) {
             const FunctionNode *func = static_cast<const FunctionNode *>(node);
             if (func->reimplementedFrom() != 0)