[llvm-commits] [llvm] r62071 - in /llvm/trunk: lib/Analysis/BasicAliasAnalysis.cpp utils/TableGen/IntrinsicEmitter.cpp

Nick Lewycky nicholas at mxc.ca
Sun Jan 11 18:56:17 PST 2009


Excellent, thanks!

Chris Lattner wrote:
> Author: lattner
> Date: Sun Jan 11 20:41:37 2009
> New Revision: 62071
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=62071&view=rev
> Log:
> make tblgen autogenerate the nocapture intrinsics for 
> llvm.memcpy/memset/memmove.  This allows removal of some 
> hackish code from basicaa.
> 
> Modified:
>     llvm/trunk/lib/Analysis/BasicAliasAnalysis.cpp
>     llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp
> 
> Modified: llvm/trunk/lib/Analysis/BasicAliasAnalysis.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/BasicAliasAnalysis.cpp?rev=62071&r1=62070&r2=62071&view=diff
> 
> ==============================================================================
> --- llvm/trunk/lib/Analysis/BasicAliasAnalysis.cpp (original)
> +++ llvm/trunk/lib/Analysis/BasicAliasAnalysis.cpp Sun Jan 11 20:41:37 2009
> @@ -69,10 +69,6 @@
>        if (cast<CallInst>(I)->paramHasAttr(UI.getOperandNo(), 
>                                            Attribute::NoCapture))
>          continue;
> -
> -      // FIXME: MemIntrinsics should have their operands marked nocapture!
> -      if (isa<MemIntrinsic>(I))
> -        continue;  // next use
>        return true;
>      case Instruction::Invoke:
>        // If the argument to the call has the nocapture attribute, then the call
> 
> Modified: llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp?rev=62071&r1=62070&r2=62071&view=diff
> 
> ==============================================================================
> --- llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp (original)
> +++ llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp Sun Jan 11 20:41:37 2009
> @@ -423,8 +423,7 @@
>    OS << "    break;\n";
>    OS << "  }\n";
>    OS << "  AttributeWithIndex AWI[" << MaxArgAttrs+1 << "];\n";
> -  OS << "  AWI[0] = AttributeWithIndex::get(~0, Attr);\n";
> -  OS << "  unsigned NumAttrs = 1;\n";
> +  OS << "  unsigned NumAttrs = 0;\n";
>    OS << "  switch (id) {\n";
>    OS << "  default: break;\n";
>    
> @@ -441,17 +440,33 @@
>  
>      unsigned NumArgsWithAttrs = 0;
>  
> -    // FIXME: EMIT ATTRS
> -    
> +    while (!ArgAttrs.empty()) {
> +      unsigned ArgNo = ArgAttrs[0].first;
> +      
> +      OS << "    AWI[" << NumArgsWithAttrs++ << "] = AttributeWithIndex::get("
> +         << ArgNo+1 << ", 0";
> +
> +      while (!ArgAttrs.empty() && ArgAttrs[0].first == ArgNo) {
> +        switch (ArgAttrs[0].second) {
> +        default: assert(0 && "Unknown arg attribute");
> +        case CodeGenIntrinsic::NoCapture:
> +          OS << "|Attribute::NoCapture";
> +          break;
> +        }
> +        ArgAttrs.erase(ArgAttrs.begin());
> +      }
> +      OS << ");\n";
> +    }
>      
> -    OS << "    NumAttrs = " << NumArgsWithAttrs+1 << ";\n";
> +    OS << "    NumAttrs = " << NumArgsWithAttrs << ";\n";
>      OS << "    break;\n";
>    }
>    
>    OS << "  }\n";
> -  OS << "  return AttrListPtr::get(AWI, NumAttrs);\n";
> +  OS << "  AWI[NumAttrs] = AttributeWithIndex::get(~0, Attr);\n";
> +  OS << "  return AttrListPtr::get(AWI, NumAttrs+1);\n";
>    OS << "}\n";
> -  OS << "#endif\n\n";
> +  OS << "#endif // GET_INTRINSIC_ATTRIBUTES\n\n";
>  }
>  
>  void IntrinsicEmitter::
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 




More information about the llvm-commits mailing list