aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Support/Alignment.h
blob: 41259b69ba3f0754ff762022a5037c2e792a5af2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//===----------- Alignment.h - Alignment computation ------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file was developed by Duncan Sands and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines utilities for computing alignments.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_SUPPORT_ALIGNMENT_H
#define LLVM_SUPPORT_ALIGNMENT_H

namespace llvm {

/// MinAlign - A and B are either alignments or offsets.  Return the minimum
/// alignment that may be assumed after adding the two together.

static inline unsigned MinAlign(unsigned A, unsigned B) {
  // The largest power of 2 that divides both A and B.
  return (A | B) & -(A | B);
}

} // end namespace llvm
#endif