mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
The promotion code lost any alignment information, when hoisting loads and stores out of the loop. This lead to incorrect aligned memory accesses. We now use the largest alignment we can prove to be correct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134520 91177308-0d34-0410-b5e6-96231b3b80d8
27 lines
638 B
LLVM
27 lines
638 B
LLVM
; RUN: opt -licm -S %s | FileCheck %s
|
|
|
|
@A = common global [1024 x float] zeroinitializer, align 4
|
|
|
|
define i32 @main() nounwind {
|
|
entry:
|
|
br label %for.cond
|
|
|
|
for.cond:
|
|
%indvar = phi i64 [ %indvar.next, %for.body ], [ 0, %entry ]
|
|
%arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 3
|
|
%vecidx = bitcast float* %arrayidx to <4 x float>*
|
|
store <4 x float> zeroinitializer, <4 x float>* %vecidx, align 4
|
|
%indvar.next = add i64 %indvar, 1
|
|
%exitcond = icmp ne i64 %indvar, 1024
|
|
br i1 %exitcond, label %for.body, label %for.end
|
|
|
|
for.body:
|
|
br label %for.cond
|
|
|
|
for.end:
|
|
ret i32 0
|
|
}
|
|
|
|
;CHECK: store <4 x float> {{.*}} align 4
|
|
|