File indexing completed on 2026-05-10 08:48:11
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef RUNTIME_DEBUG_BUILDER_H
0012 #define RUNTIME_DEBUG_BUILDER_H
0013
0014 #include "polly/CodeGen/IRBuilder.h"
0015 #include "llvm/ADT/ArrayRef.h"
0016 #include "llvm/ADT/StringRef.h"
0017 #include <vector>
0018
0019 namespace llvm {
0020 class Value;
0021 class Function;
0022 }
0023
0024 namespace polly {
0025
0026
0027
0028
0029
0030 struct RuntimeDebugBuilder {
0031
0032
0033
0034
0035
0036
0037
0038
0039 static llvm::Value *getPrintableString(PollyIRBuilder &Builder,
0040 llvm::StringRef Str);
0041
0042
0043
0044
0045
0046
0047
0048 static bool isPrintable(llvm::Type *Ty);
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060 template <typename... Args>
0061 static void createCPUPrinter(PollyIRBuilder &Builder, Args... args) {
0062 std::vector<llvm::Value *> Vector;
0063 createPrinter(Builder, Vector, args...);
0064 }
0065
0066 private:
0067
0068 template <typename... Args>
0069 static void createPrinter(PollyIRBuilder &Builder,
0070 std::vector<llvm::Value *> &Values,
0071 llvm::Value *Value, Args... args) {
0072 Values.push_back(Value);
0073 createPrinter(Builder, Values, args...);
0074 }
0075
0076
0077 template <typename... Args>
0078 static void createPrinter(PollyIRBuilder &Builder,
0079 std::vector<llvm::Value *> &Values,
0080 llvm::StringRef String, Args... args) {
0081 Values.push_back(getPrintableString(Builder, String));
0082 createPrinter(Builder, Values, args...);
0083 }
0084
0085
0086 template <typename... Args>
0087 static void createPrinter(PollyIRBuilder &Builder,
0088 std::vector<llvm::Value *> &Values,
0089 llvm::ArrayRef<llvm::Value *> Array, Args... args) {
0090 Values.insert(Values.end(), Array.begin(), Array.end());
0091 createPrinter(Builder, Values, args...);
0092 }
0093
0094
0095 static void createPrinter(PollyIRBuilder &Builder,
0096 llvm::ArrayRef<llvm::Value *> Values);
0097
0098
0099 static void createCPUPrinterT(PollyIRBuilder &Builder,
0100 llvm::ArrayRef<llvm::Value *> Values);
0101
0102
0103
0104
0105
0106 static llvm::Function *getPrintF(PollyIRBuilder &Builder);
0107
0108
0109
0110
0111
0112
0113 static void createPrintF(PollyIRBuilder &Builder, std::string Format,
0114 llvm::ArrayRef<llvm::Value *> Values);
0115
0116
0117 static llvm::Function *getVPrintF(PollyIRBuilder &Builder);
0118
0119
0120
0121
0122 static void createFlush(PollyIRBuilder &Builder);
0123 };
0124 }
0125
0126 extern bool PollyDebugPrinting;
0127
0128 #endif