summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2012-02-27 23:16:46 +0000
committerEli Friedman <eli.friedman@gmail.com>2012-02-27 23:16:46 +0000
commitcd38485b8ae2928cc8cb3bb67dcff7c7b7529ebe (patch)
tree6f77e5fed9ce604841730fc0e910747ec72647b8
parent0cae72c47eac96ea53def5c1964aae188618f389 (diff)
downloadllvm-cd38485b8ae2928cc8cb3bb67dcff7c7b7529ebe.tar.gz
llvm-cd38485b8ae2928cc8cb3bb67dcff7c7b7529ebe.tar.bz2
llvm-cd38485b8ae2928cc8cb3bb67dcff7c7b7529ebe.tar.xz
Duncan pointed out that if the alignment isn't explicitly specified, it defaults to the ABI alignment. Given that, make this code a bit more aggressive in such cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151584 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Analysis/BasicAliasAnalysis.cpp8
-rw-r--r--test/Analysis/BasicAA/global-size.ll2
2 files changed, 5 insertions, 5 deletions
diff --git a/lib/Analysis/BasicAliasAnalysis.cpp b/lib/Analysis/BasicAliasAnalysis.cpp
index 23b89ddf75..20ecfd26a9 100644
--- a/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/lib/Analysis/BasicAliasAnalysis.cpp
@@ -120,11 +120,11 @@ static uint64_t getObjectSize(const Value *V, const TargetData &TD,
return AliasAnalysis::UnknownSize;
uint64_t Size = TD.getTypeAllocSize(AccessTy);
- if (RoundToAlign) {
- if (!Align)
- return AliasAnalysis::UnknownSize;
+ // If there is an explicitly specified alignment, and we need to
+ // take alignment into account, round up the size. (If the alignment
+ // is implicit, getTypeAllocSize is sufficient.)
+ if (RoundToAlign && Align)
Size = RoundUpToAlignment(Size, Align);
- }
return Size;
}
diff --git a/test/Analysis/BasicAA/global-size.ll b/test/Analysis/BasicAA/global-size.ll
index 617f4c3d9d..a7e5aab6c1 100644
--- a/test/Analysis/BasicAA/global-size.ll
+++ b/test/Analysis/BasicAA/global-size.ll
@@ -4,7 +4,7 @@
; RUN: opt < %s -basicaa -gvn -S | FileCheck %s
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"
-@B = global i16 8, align 2
+@B = global i16 8
; CHECK: @test1
define i16 @test1(i32* %P) {