Any void readonly functions are provably dead, don't waste time adding
authorNick Lewycky <nicholas@mxc.ca>
Sat, 3 Jan 2009 17:05:32 +0000 (17:05 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Sat, 3 Jan 2009 17:05:32 +0000 (17:05 +0000)
nocapture attributes to them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61610 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/FunctionAttrs.cpp

index aea4cb4cf2628dfc399016a998223d4aa5b7b420..453b3c51aa2441c1831265ef5aef8e27741d6b3c 100644 (file)
@@ -307,20 +307,6 @@ bool FunctionAttrs::AddNoCaptureAttrs(const std::vector<CallGraphNode *> &SCC) {
       // External node - skip it;
       continue;
 
-    // If the function is readonly and doesn't return any value, we know that
-    // the pointer value is not captured.  Mark all of its pointer arguments
-    // nocapture.
-    if (F->onlyReadsMemory() && F->getReturnType() == Type::VoidTy) {
-      for (Function::arg_iterator A = F->arg_begin(), E = F->arg_end();
-           A != E; ++A)
-        if (isa<PointerType>(A->getType()) && !A->hasNoCaptureAttr()) {
-          A->addAttr(Attribute::NoCapture);
-          ++NumNoCapture;
-          Changed = true;
-        }
-      continue;
-    }
-
     // Definitions with weak linkage may be overridden at linktime with
     // something that writes memory, so treat them like declarations.
     if (F->isDeclaration() || F->mayBeOverridden())