Skip to content

Commit c71c1e1

Browse files
committed
Ensure types used as std::vector elements are complete.
These were never allowed, but with C++20 making more `vector` functions `constexpr`, they would start causing build failures in that language mode.
1 parent 79935f9 commit c71c1e1

File tree

2 files changed

+23
-24
lines changed

2 files changed

+23
-24
lines changed

include/swift/SILOptimizer/PassManager/PassPipeline.h

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,28 @@
3333
namespace swift {
3434

3535
class SILPassPipelinePlan;
36-
struct SILPassPipeline;
36+
37+
struct SILPassPipeline final {
38+
unsigned ID;
39+
StringRef Name;
40+
unsigned KindOffset;
41+
bool isFunctionPassPipeline;
42+
43+
friend bool operator==(const SILPassPipeline &lhs,
44+
const SILPassPipeline &rhs) {
45+
return lhs.ID == rhs.ID && lhs.Name.equals(rhs.Name) &&
46+
lhs.KindOffset == rhs.KindOffset;
47+
}
48+
49+
friend bool operator!=(const SILPassPipeline &lhs,
50+
const SILPassPipeline &rhs) {
51+
return !(lhs == rhs);
52+
}
53+
54+
friend llvm::hash_code hash_value(const SILPassPipeline &pipeline) {
55+
return llvm::hash_combine(pipeline.ID, pipeline.Name, pipeline.KindOffset);
56+
}
57+
};
3758

3859
enum class PassPipelineKind {
3960
#define PASSPIPELINE(NAME, DESCRIPTION) NAME,
@@ -123,28 +144,6 @@ class SILPassPipelinePlan final {
123144
}
124145
};
125146

126-
struct SILPassPipeline final {
127-
unsigned ID;
128-
StringRef Name;
129-
unsigned KindOffset;
130-
bool isFunctionPassPipeline;
131-
132-
friend bool operator==(const SILPassPipeline &lhs,
133-
const SILPassPipeline &rhs) {
134-
return lhs.ID == rhs.ID && lhs.Name.equals(rhs.Name) &&
135-
lhs.KindOffset == rhs.KindOffset;
136-
}
137-
138-
friend bool operator!=(const SILPassPipeline &lhs,
139-
const SILPassPipeline &rhs) {
140-
return !(lhs == rhs);
141-
}
142-
143-
friend llvm::hash_code hash_value(const SILPassPipeline &pipeline) {
144-
return llvm::hash_combine(pipeline.ID, pipeline.Name, pipeline.KindOffset);
145-
}
146-
};
147-
148147
inline void SILPassPipelinePlan::
149148
startPipeline(StringRef Name, bool isFunctionPassPipeline) {
150149
PipelineStages.push_back(SILPassPipeline{

lib/IRGen/Outlining.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#ifndef SWIFT_IRGEN_OUTLINING_H
1818
#define SWIFT_IRGEN_OUTLINING_H
1919

20+
#include "LocalTypeDataKind.h"
2021
#include "swift/Basic/LLVM.h"
2122
#include "llvm/ADT/MapVector.h"
2223

@@ -37,7 +38,6 @@ class Address;
3738
class Explosion;
3839
class IRGenFunction;
3940
class IRGenModule;
40-
class LocalTypeDataKey;
4141
class TypeInfo;
4242

4343
/// A helper class for emitting outlined value operations.

0 commit comments

Comments
 (0)