1 //===- Local.h - Functions to perform local transformations -----*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This family of functions perform various local transformations to the
10 // program.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_ANALYSIS_UTILS_LOCAL_H
15 #define LLVM_ANALYSIS_UTILS_LOCAL_H
16 
17 namespace llvm {
18 
19 class DataLayout;
20 class IRBuilderBase;
21 class User;
22 class Value;
23 
24 /// Given a getelementptr instruction/constantexpr, emit the code necessary to
25 /// compute the offset from the base pointer (without adding in the base
26 /// pointer). Return the result as a signed integer of intptr size.
27 /// When NoAssumptions is true, no assumptions about index computation not
28 /// overflowing is made.
29 Value *emitGEPOffset(IRBuilderBase *Builder, const DataLayout &DL, User *GEP,
30                      bool NoAssumptions = false);
31 
32 } // namespace llvm
33 
34 #endif // LLVM_ANALYSIS_UTILS_LOCAL_H
35