aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/CodeGen/MachineIRTypes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backend/lib/CodeGen/MachineIRTypes.cpp')
-rw-r--r--backend/lib/CodeGen/MachineIRTypes.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/backend/lib/CodeGen/MachineIRTypes.cpp b/backend/lib/CodeGen/MachineIRTypes.cpp
index 7f97e98..b5348b3 100644
--- a/backend/lib/CodeGen/MachineIRTypes.cpp
+++ b/backend/lib/CodeGen/MachineIRTypes.cpp
@@ -2,8 +2,17 @@
#include "rcc/CodeGen/MachineIRTypes.h"
+#include <bit>
+
namespace rcc {
+Expected<Alignment> Alignment::create(std::uint64_t Bytes) {
+ if (!std::has_single_bit(Bytes)) {
+ return makeUnexpected(ErrorCode::InvalidArgument, "alignment must be a nonzero power of two");
+ }
+ return Alignment(Bytes);
+}
+
Expected<BranchProbability> BranchProbability::fromFraction(std::uint32_t Numerator,
std::uint32_t Denominator) {
if (Denominator == 0) {