[llvm-commits] CVS: llvm/lib/Target/CBackend/CBackend.cpp

Chris Lattner clattner at apple.com
Thu Apr 12 14:29:35 PDT 2007


> Provide support for intrinsics that lower themselves to a function  
> body.
> This can happen for intrinsics that are overloaded.  In such cases  
> it is
> necessary to emit a function prototype before the body of the function
> that calls the intrinsic and to ensure we don't emit it multiple  
> times.

Please make sure these are emitted with weak linkage, so they get  
merged across .o files.
>  #include "llvm/Config/config.h"
>  #include <algorithm>
>  #include <sstream>
> +// #include <set>
>  using namespace llvm;

Plz remove.

>
> +  // We may have collected some prototypes to emit in the loop above.
> +  // Emit them now, before the function that uses them is emitted.  
> But,
> +  // be careful not to emit them twice.
> +  std::vector<Function*>::iterator I = prototypesToGen.begin();
> +  std::vector<Function*>::iterator E = prototypesToGen.end();
> +  for ( ; I != E; ++I) {
> +    if (intrinsicPrototypesAlreadyGenerated.count(*I) == 0) {
> +      Out << '\n';
> +      printFunctionSignature(*I, true);
> +      Out << ";\n";
> +      intrinsicPrototypesAlreadyGenerated.insert(*I);

Instead of count+insert, just use insert and check the result to see  
if it succeeded.

Thanks,

-chris

> +    }
> +  }
> +}
>
>
>  void CWriter::visitCallInst(CallInst &I) {
>
>
>
> _______________________________________________
> 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