[llvm-commits] [llvm] r162090 - /llvm/trunk/include/llvm/Support/NoFolder.h

Jin Gu Kang jaykang10 at imrc.kist.re.kr
Fri Aug 17 04:18:56 PDT 2012


I didn't see a unittest for IRBuilder with existing ConstantFolder and TargetFolder on llvm's unittests and test-suite's unittests directory. And I didn't have experience with making unittest. Can you teach me to make unittest? :)

Thanks for your comment,
Jin-Gu Kang

________________________________
From: Chandler Carruth [chandlerc at google.com]
Sent: Friday, August 17, 2012 8:03 PM
To: Jin Gu Kang
Cc: llvm-commits at cs.uiuc.edu
Subject: Re: [llvm-commits] [llvm] r162090 - /llvm/trunk/include/llvm/Support/NoFolder.h

OK, that makes sense. As I mentioned, can you add a unittest for IRBuilder which uses NoFolder so that we don't regress our support for it?


On Fri, Aug 17, 2012 at 4:00 AM, Jin Gu Kang <jaykang10 at imrc.kist.re.kr<mailto:jaykang10 at imrc.kist.re.kr>> wrote:
These patched functions alreay exist on ConstantFolder and TargetFolder to avoid same problems. you can find these functions on include/llvm/Support/ConstantFolder.h and include/llvm/Support/TargetFolder.h
I am compiling clang with NoFoldered IRBuilder using GCC-4.4.3 on Ubuntu-Server-10.4. Maybe, if you use IRBuilder with NoFolder template parameter to make LLVM IR,  you can see same errors or warinings.

Thanks,
Jin-Gu Kang
________________________________
From: Chandler Carruth [chandlerc at google.com<mailto:chandlerc at google.com>]
Sent: Friday, August 17, 2012 6:44 PM

To: Jin Gu Kang
Cc: llvm-commits at cs.uiuc.edu<mailto:llvm-commits at cs.uiuc.edu>
Subject: Re: [llvm-commits] [llvm] r162090 - /llvm/trunk/include/llvm/Support/NoFolder.h

No, the comment as written makes more sense now.... Although the error doesn't entirely make sense.

But where are you seeing these errors? What compiler?

Unless this is a compiler bug (either in our compilers for not warning, or yours for warning) we should add a unittest to ensure that the call pattern in question continues to work.


On Fri, Aug 17, 2012 at 2:21 AM, Jin Gu Kang <jaykang10 at imrc.kist.re.kr<mailto:jaykang10 at imrc.kist.re.kr>> wrote:
Thanks for your comment,

This comment means that this function's goal is to avoid ambigious overload error as following when we use NoFolder.

/llvm-3.1.src/include/llvm/Support/IRBuilder.h:841: error: call of overloaded ‘CreateGetElementPtr(llvm::Constant*&, llvm::Constant*&)’ is ambiguous
/llvm-3.1.src/include/llvm/Support/NoFolder.h:180: note: candidates are: llvm::Constant* llvm::NoFolder::CreateGetElementPtr(llvm::Constant*, llvm::ArrayRef<llvm::Constant*>) const
/llvm-3.1.src/include/llvm/Support/NoFolder.h:194: note:                 llvm::Instruction* llvm::NoFolder::CreateGetElementPtr(llvm::Constant*, llvm::ArrayRef<llvm::Value*>) const

What do you think about this comment?

"Insertion of NoFolder functions to avoid ambiguous overload warnings or errors like ConstantFolder and TargetFolder."

Thanks,
Jin-Gu Kang
________________________________
From: Chandler Carruth [chandlerc at google.com<mailto:chandlerc at google.com>]
Sent: Friday, August 17, 2012 6:01 PM
To: Jin Gu Kang
Cc: llvm-commits at cs.uiuc.edu<mailto:llvm-commits at cs.uiuc.edu>
Subject: Re: [llvm-commits] [llvm] r162090 - /llvm/trunk/include/llvm/Support/NoFolder.h

On Fri, Aug 17, 2012 at 1:54 AM, Jin-Gu Kang <jaykang10 at imrc.kist.re.kr<mailto:jaykang10 at imrc.kist.re.kr>> wrote:
Author: jaykang10
Date: Fri Aug 17 03:54:57 2012
New Revision: 162090

URL: http://llvm.org/viewvc/llvm-project?rev=162090&view=rev
Log:
Insertion of NoFolder functions to avoid ambiguous overload warnings or errors about whether to convert Idx to ArrayRef<Constant *> or ArrayRef<Value *> like ConstantFolder and TargetFolder.

Modified:
    llvm/trunk/include/llvm/Support/NoFolder.h

Modified: llvm/trunk/include/llvm/Support/NoFolder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/NoFolder.h?rev=162090&r1=162089&r2=162090&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/NoFolder.h (original)
+++ llvm/trunk/include/llvm/Support/NoFolder.h Fri Aug 17 03:54:57 2012
@@ -181,6 +181,12 @@
                                 ArrayRef<Constant *> IdxList) const {
     return ConstantExpr::getGetElementPtr(C, IdxList);
   }
+  Constant *CreateGetElementPtr(Constant *C, Constant *Idx) const {
+    // This form of the function only exists to avoid ambiguous overload
+    // warnings about whether to convert Idx to ArrayRef<Constant *> or
+    // ArrayRef<Value *>.

This comment doesn't seem right at all -- this function doesn't accept anything to do with ArrayRef. The comment seems copy/pasted from the edit below where it is correct, but it needs updating for this signature.

+    return ConstantExpr::getGetElementPtr(C, Idx);
+  }
   Instruction *CreateGetElementPtr(Constant *C,
                                    ArrayRef<Value *> IdxList) const {
     return GetElementPtrInst::Create(C, IdxList);
@@ -190,6 +196,12 @@
                                         ArrayRef<Constant *> IdxList) const {
     return ConstantExpr::getInBoundsGetElementPtr(C, IdxList);
   }
+  Constant *CreateInBoundsGetElementPtr(Constant *C, Constant *Idx) const {
+    // This form of the function only exists to avoid ambiguous overload
+    // warnings about whether to convert Idx to ArrayRef<Constant *> or
+    // ArrayRef<Value *>.
+    return ConstantExpr::getInBoundsGetElementPtr(C, Idx);
+  }
   Instruction *CreateInBoundsGetElementPtr(Constant *C,
                                            ArrayRef<Value *> IdxList) const {
     return GetElementPtrInst::CreateInBounds(C, IdxList);


_______________________________________________
llvm-commits mailing list
llvm-commits at cs.uiuc.edu<mailto:llvm-commits at cs.uiuc.edu>
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120817/8ca4254f/attachment.html>


More information about the llvm-commits mailing list