forked from OSchip/llvm-project
[Alignment][NFC] Add a helper function to DataLayout
Summary: This is patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html See this patch for the introduction of the type: https://reviews.llvm.org/D64790 Reviewers: courbet Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D69258 llvm-svn: 375413
This commit is contained in:
parent
fe263c4f0f
commit
c7a76d6bf0
|
@ -504,6 +504,13 @@ public:
|
|||
/// Returns the minimum ABI-required alignment for the specified type.
|
||||
unsigned getABITypeAlignment(Type *Ty) const;
|
||||
|
||||
/// Helper function to return `Alignment` if it's set or the result of
|
||||
/// `getABITypeAlignment(Ty)`, in any case the result is a valid alignment.
|
||||
inline Align getValueOrABITypeAlignment(MaybeAlign Alignment,
|
||||
Type *Ty) const {
|
||||
return Alignment ? *Alignment : Align(getABITypeAlignment(Ty));
|
||||
}
|
||||
|
||||
/// Returns the minimum ABI-required alignment for an integer type of
|
||||
/// the specified bitwidth.
|
||||
Align getABIIntegerTypeAlignment(unsigned BitWidth) const;
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/IR/DataLayout.h"
|
||||
#include "llvm/IR/LLVMContext.h"
|
||||
#include "llvm/IR/Type.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
@ -44,4 +46,14 @@ TEST(DataLayoutTest, FunctionPtrAlign) {
|
|||
EXPECT_EQ(a, c);
|
||||
}
|
||||
|
||||
TEST(DataLayoutTest, ValueOrABITypeAlignment) {
|
||||
const DataLayout DL("Fi8");
|
||||
LLVMContext Context;
|
||||
Type *const FourByteAlignType = Type::getInt32Ty(Context);
|
||||
EXPECT_EQ(Align(16),
|
||||
DL.getValueOrABITypeAlignment(MaybeAlign(16), FourByteAlignType));
|
||||
EXPECT_EQ(Align(4),
|
||||
DL.getValueOrABITypeAlignment(MaybeAlign(), FourByteAlignType));
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
|
Loading…
Reference in New Issue