[llvm-commits] [llvm] r160733 - in /llvm/trunk: include/llvm/Target/TargetLibraryInfo.h include/llvm/Transforms/Utils/BuildLibCalls.h lib/Target/TargetLibraryInfo.cpp lib/Transforms/InstCombine/InstCombineCalls.cpp lib/Transforms/Scalar/CodeGenPr

Eli Friedman eli.friedman at gmail.com
Wed Jul 25 10:22:20 PDT 2012


On Wed, Jul 25, 2012 at 9:46 AM, Nuno Lopes <nunoplopes at sapo.pt> wrote:
> Author: nlopes
> Date: Wed Jul 25 11:46:31 2012
> New Revision: 160733
>
> URL: http://llvm.org/viewvc/llvm-project?rev=160733&view=rev
> Log:
> make all Emit*() functions consult the TargetLibraryInfo information before creating a call to a library function.
> Update all clients to pass the TLI information around.
> Previous draft reviewed by Eli.

@@ -1179,7 +1186,7 @@

     // printf("x") -> putchar('x'), even for '%'.
     if (FormatStr.size() == 1) {
-      Value *Res = EmitPutChar(B.getInt32(FormatStr[0]), B, TD);
+      Value *Res = EmitPutChar(B.getInt32(FormatStr[0]), B, TD, TLI);
       if (CI->use_empty()) return CI;
       return B.CreateIntCast(Res, CI->getType(), true);
     }

Missing null check?

     // Optimize specific format strings.
     // printf("%c", chr) --> putchar(chr)
     if (FormatStr == "%c" && CI->getNumArgOperands() > 1 &&
         CI->getArgOperand(1)->getType()->isIntegerTy()) {
-      Value *Res = EmitPutChar(CI->getArgOperand(1), B, TD);
+      Value *Res = EmitPutChar(CI->getArgOperand(1), B, TD, TLI);

       if (CI->use_empty()) return CI;
       return B.CreateIntCast(Res, CI->getType(), true);

Missing null check?

@@ -495,7 +497,7 @@
     // We have enough information to now generate the memcpy call to do the
     // copy for us.  Make a memcpy to copy the nul byte with align = 1.
     if (OptChkCall)
-      EmitMemCpyChk(Dst, Src, LenV, CI->getArgOperand(2), B, TD);
+      EmitMemCpyChk(Dst, Src, LenV, CI->getArgOperand(2), B, TD, TLI);
     else
       B.CreateMemCpy(Dst, Src, LenV, 1);
     return DstEnd;

Missing null check?

@@ -164,7 +164,7 @@
   void EmitStrLenMemCpy(Value *Src, Value *Dst, uint64_t Len, IRBuilder<> &B) {
     // We need to find the end of the destination string.  That's where the
     // memory is to be moved to. We just generate a call to strlen.
-    Value *DstLen = EmitStrLen(Dst, B, TD);
+    Value *DstLen = EmitStrLen(Dst, B, TD, TLI);

     // Now that we have the destination's length, we must index into the
     // destination's pointer to get the actual memcpy destination (end of

Missing null check?

Not sure if that's a complete list.

-Eli



More information about the llvm-commits mailing list