/builds/2mk6rsew/0/parcoach/parcoach/src/aSSA/Warning.cpp
Line | Count | Source |
1 | | #include "parcoach/Warning.h" |
2 | | |
3 | | #include "llvm/IR/DebugInfoMetadata.h" |
4 | | #include "llvm/IR/Function.h" |
5 | | #include "llvm/Support/raw_ostream.h" |
6 | | |
7 | | using namespace llvm; |
8 | | |
9 | | namespace parcoach { |
10 | | |
11 | | Location::Location(DebugLoc DL) |
12 | 4.89k | : Filename(DL ? DL->getFilename() : "?"), Line(DL ? DL->getLine() : 0) {} |
13 | | |
14 | | Warning::Warning(Function const &F, DebugLoc DL, ConditionalsContainerTy &&C) |
15 | 2.41k | : MissedFunction(F), Where(DL), Conditionals(C) { |
16 | | // Make sure lines are displayed in order. |
17 | 2.41k | llvm::sort(Conditionals); |
18 | 2.41k | } |
19 | | |
20 | 2.42k | std::string Warning::toString() const { |
21 | | |
22 | 2.42k | std::string Res; |
23 | 2.42k | raw_string_ostream OS(Res); |
24 | 2.42k | OS << MissedFunction.getName() << " line " << Where.Line; |
25 | 2.42k | OS << " possibly not called by all processes because of conditional(s) " |
26 | 2.42k | "line(s) "; |
27 | | |
28 | 2.48k | for (auto const &Loc : Conditionals) { |
29 | 2.48k | OS << " " << Loc.Line; |
30 | 2.48k | OS << " (" << Loc.Filename << ")"; |
31 | 2.48k | } |
32 | 2.42k | OS << " (Call Ordering Error)"; |
33 | 2.42k | return Res; |
34 | 2.42k | } |
35 | | |
36 | | } // namespace parcoach |