1 //===- polly/CodeGeneration.h - The Polly code generator --------*- 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 #ifndef POLLY_CODEGENERATION_H
10 #define POLLY_CODEGENERATION_H
11 
12 #include "polly/CodeGen/IRBuilder.h"
13 #include "polly/ScopPass.h"
14 #include "llvm/IR/PassManager.h"
15 
16 namespace polly {
17 
18 enum VectorizerChoice {
19   VECTORIZER_NONE,
20   VECTORIZER_STRIPMINE,
21 };
22 extern VectorizerChoice PollyVectorizerChoice;
23 
24 /// Mark a basic block unreachable.
25 ///
26 /// Marks the basic block @p Block unreachable by equipping it with an
27 /// UnreachableInst.
28 void markBlockUnreachable(BasicBlock &Block, PollyIRBuilder &Builder);
29 
30 struct CodeGenerationPass final : PassInfoMixin<CodeGenerationPass> {
31   PreservedAnalyses run(Scop &S, ScopAnalysisManager &SAM,
32                         ScopStandardAnalysisResults &AR, SPMUpdater &U);
33 };
34 
35 extern bool PerfMonitoring;
36 } // namespace polly
37 
38 #endif // POLLY_CODEGENERATION_H
39