[PATCH] D16878: [POLLY] Support accesses with differently sized types to the same array

Tobias Grosser via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 4 04:40:50 PST 2016

grosser added a comment.

Last comments inline.

Comment at: include/polly/Support/ScopHelper.h:151
@@ -141,3 +150,3 @@
   llvm::Value *getValueOperand() const {
     if (isLoad())
       return asLoad();
Meinersbur wrote:
> jdoerfert wrote:
> > This method (as well as most of the ones above) is now just a plain wrapper around the same one in llvm::Instruction. I argued this before and will do it again: __ Do not copy all these functions but instead use the original __
> > 
> > 
> > ```
> > MAcc.asInstruction()->getDebugLoc();
> > ```
> > 
> > is not soo bad is it?
> The model CallSite class also has some of these forwarders. In my original design, MemAccInst was derived from llvm::Instruction st this was no issue.
> Suggestion:
> ```
> Instruction *operator->() const { return I; }
> ```
> and use like this:
> ```
> MAcc->getDebugLoc();
> ``` 
I still like the shorter version.

Adding new, trivial functions out-of-line seems to be minimal cost whereas adding (even so minimal) complexity in already non-trivial functions is something I am slightly worried about.

Clearly this is nothing super important, so if you feel strong about this I could change this.

Comment at: test/ScopInfo/multiple-types-non-power-of-two.ll:26
@@ +25,3 @@
+; The allocation size discussed above defines the number of canonical array
+; elements accessed. For example, even though i27 only consists of 3 bytes,
Sorry, i27 was a mistake. It should be i24. Then the explanation makes sense.

Regarding the allocation size. We derived it using DL.getTypeAllocSize(), so it was already target specific. I now use the function getTypeAllocSizeInBits(), which allows us to also get rid of the magic constant '8'.


More information about the llvm-commits mailing list