<div dir="ltr">LGTM.<div><br></div><div>-Eli<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Sep 3, 2013 at 12:18 PM, Matt Arsenault <span dir="ltr"><<a href="mailto:Matthew.Arsenault@amd.com" target="_blank">Matthew.Arsenault@amd.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This is another one that doesn't matter much, but uses the right GEP index types in the first place. The tests just make sure this is hit with a non-zero, different sized address space. The result doesn't actually change.<br>

<br>
<a href="http://llvm-reviews.chandlerc.com/D1586" target="_blank">http://llvm-reviews.chandlerc.com/D1586</a><br>
<br>
Files:<br>
  lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp<br>
  test/Transforms/InstCombine/align-addr.ll<br>
<br>
Index: lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp<br>
===================================================================<br>
--- lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp<br>
+++ lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp<br>
@@ -304,8 +304,8 @@<br>
         if (Constant *CSrc = dyn_cast<Constant>(CastOp))<br>
           if (ASrcTy->getNumElements() != 0) {<br>
             Type *IdxTy = TD<br>
-                        ? TD->getIntPtrType(LI.getContext())<br>
-                        : Type::getInt64Ty(LI.getContext());<br>
+                        ? TD->getIntPtrType(SrcTy)<br>
+                        : Type::getInt64Ty(SrcTy->getContext());<br>
             Value *Idx = Constant::getNullValue(IdxTy);<br>
             Value *Idxs[2] = { Idx, Idx };<br>
             CastOp = ConstantExpr::getGetElementPtr(CSrc, Idxs);<br>
Index: test/Transforms/InstCombine/align-addr.ll<br>
===================================================================<br>
--- test/Transforms/InstCombine/align-addr.ll<br>
+++ test/Transforms/InstCombine/align-addr.ll<br>
@@ -1,5 +1,5 @@<br>
 ; RUN: opt < %s -instcombine -S | FileCheck %s<br>
-target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"<br>
+target datalayout = "E-p:64:64:64-p1:32:32:32-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"<br>
<br>
 ; Instcombine should be able to prove vector alignment in the<br>
 ; presence of a few mild address computation tricks.<br>
@@ -47,6 +47,27 @@<br>
        ret <16 x i8> %tmp<br>
 }<br>
<br>
+@GLOBAL_as1 = internal addrspace(1) global [4 x i32] zeroinitializer<br>
+<br>
+define <16 x i8> @test1_as1(<2 x i64> %x) {<br>
+; CHECK-LABEL: @test1_as1(<br>
+; CHECK: tmp = load<br>
+; CHECK: GLOBAL_as1{{.*}}align 16<br>
+  %tmp = load <16 x i8> addrspace(1)* bitcast ([4 x i32] addrspace(1)* @GLOBAL_as1 to <16 x i8> addrspace(1)*), align 1<br>
+  ret <16 x i8> %tmp<br>
+}<br>
+<br>
+@GLOBAL_as1_gep = internal addrspace(1) global [8 x i32] zeroinitializer<br>
+<br>
+define <16 x i8> @test1_as1_gep(<2 x i64> %x) {<br>
+; CHECK-LABEL: @test1_as1_gep(<br>
+; CHECK: tmp = load<br>
+; CHECK: GLOBAL_as1_gep{{.*}}align 16<br>
+  %tmp = load <16 x i8> addrspace(1)* bitcast (i32 addrspace(1)* getelementptr ([8 x i32] addrspace(1)* @GLOBAL_as1_gep, i16 0, i16 4) to <16 x i8> addrspace(1)*), align 1<br>
+  ret <16 x i8> %tmp<br>
+}<br>
+<br>
+<br>
 ; When a load or store lacks an explicit alignment, add one.<br>
<br>
 ; CHECK-LABEL: @test2(<br>
<br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div></div></div>