Skip to content

Commit 7378afd

Browse files
authored
Revert "[Multilib] Custom flags YAML parsing" (llvm#122722)
Reverts llvm#110657 It seems that this patch is causing the sanitizer bot to fail. Reverting while I investigate
1 parent 5e7d7fb commit 7378afd

File tree

3 files changed

+11
-223
lines changed

3 files changed

+11
-223
lines changed

clang/include/clang/Driver/Multilib.h

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -101,25 +101,6 @@ class Multilib {
101101

102102
raw_ostream &operator<<(raw_ostream &OS, const Multilib &M);
103103

104-
namespace custom_flag {
105-
struct Declaration;
106-
using DeclarationPtr = std::shared_ptr<Declaration>;
107-
108-
struct ValueDetail {
109-
std::string Name;
110-
std::optional<SmallVector<std::string>> MacroDefines;
111-
DeclarationPtr Decl;
112-
};
113-
114-
struct Declaration {
115-
std::string Name;
116-
SmallVector<ValueDetail> ValueList;
117-
std::optional<size_t> DefaultValueIdx;
118-
};
119-
120-
static constexpr StringRef Prefix = "-fmultilib-flag=";
121-
} // namespace custom_flag
122-
123104
/// See also MultilibSetBuilder for combining multilibs into a set.
124105
class MultilibSet {
125106
public:
@@ -139,18 +120,15 @@ class MultilibSet {
139120

140121
private:
141122
multilib_list Multilibs;
142-
SmallVector<FlagMatcher> FlagMatchers;
143-
SmallVector<custom_flag::DeclarationPtr> CustomFlagDecls;
123+
std::vector<FlagMatcher> FlagMatchers;
144124
IncludeDirsFunc IncludeCallback;
145125
IncludeDirsFunc FilePathsCallback;
146126

147127
public:
148128
MultilibSet() = default;
149129
MultilibSet(multilib_list &&Multilibs,
150-
SmallVector<FlagMatcher> &&FlagMatchers = {},
151-
SmallVector<custom_flag::DeclarationPtr> &&CustomFlagDecls = {})
152-
: Multilibs(std::move(Multilibs)), FlagMatchers(std::move(FlagMatchers)),
153-
CustomFlagDecls(std::move(CustomFlagDecls)) {}
130+
std::vector<FlagMatcher> &&FlagMatchers = {})
131+
: Multilibs(Multilibs), FlagMatchers(FlagMatchers) {}
154132

155133
const multilib_list &getMultilibs() { return Multilibs; }
156134

clang/lib/Driver/Multilib.cpp

Lines changed: 8 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
#include "clang/Basic/LLVM.h"
1111
#include "clang/Driver/Driver.h"
1212
#include "llvm/ADT/DenseSet.h"
13-
#include "llvm/ADT/SmallSet.h"
1413
#include "llvm/ADT/StringRef.h"
1514
#include "llvm/Support/Compiler.h"
1615
#include "llvm/Support/ErrorHandling.h"
@@ -202,20 +201,13 @@ struct MultilibGroupSerialization {
202201

203202
struct MultilibSetSerialization {
204203
llvm::VersionTuple MultilibVersion;
205-
SmallVector<MultilibGroupSerialization> Groups;
206-
SmallVector<MultilibSerialization> Multilibs;
207-
SmallVector<MultilibSet::FlagMatcher> FlagMatchers;
208-
SmallVector<custom_flag::DeclarationPtr> CustomFlagDeclarations;
204+
std::vector<MultilibGroupSerialization> Groups;
205+
std::vector<MultilibSerialization> Multilibs;
206+
std::vector<MultilibSet::FlagMatcher> FlagMatchers;
209207
};
210208

211209
} // end anonymous namespace
212210

213-
LLVM_YAML_IS_SEQUENCE_VECTOR(MultilibSerialization)
214-
LLVM_YAML_IS_SEQUENCE_VECTOR(MultilibGroupSerialization)
215-
LLVM_YAML_IS_SEQUENCE_VECTOR(MultilibSet::FlagMatcher)
216-
LLVM_YAML_IS_SEQUENCE_VECTOR(custom_flag::ValueDetail)
217-
LLVM_YAML_IS_SEQUENCE_VECTOR(custom_flag::DeclarationPtr)
218-
219211
template <> struct llvm::yaml::MappingTraits<MultilibSerialization> {
220212
static void mapping(llvm::yaml::IO &io, MultilibSerialization &V) {
221213
io.mapOptional("Dir", V.Dir);
@@ -263,63 +255,11 @@ template <> struct llvm::yaml::MappingTraits<MultilibSet::FlagMatcher> {
263255
}
264256
};
265257

266-
template <>
267-
struct llvm::yaml::MappingContextTraits<custom_flag::ValueDetail,
268-
llvm::SmallSet<std::string, 32>> {
269-
static void mapping(llvm::yaml::IO &io, custom_flag::ValueDetail &V,
270-
llvm::SmallSet<std::string, 32> &) {
271-
io.mapRequired("Name", V.Name);
272-
io.mapOptional("MacroDefines", V.MacroDefines);
273-
}
274-
static std::string validate(IO &io, custom_flag::ValueDetail &V,
275-
llvm::SmallSet<std::string, 32> &NameSet) {
276-
if (V.Name.empty())
277-
return "custom flag value requires a name";
278-
if (!NameSet.insert(V.Name).second)
279-
return "duplicate custom flag value name: \"" + V.Name + "\"";
280-
return {};
281-
}
282-
};
283-
284-
template <>
285-
struct llvm::yaml::MappingContextTraits<custom_flag::DeclarationPtr,
286-
llvm::SmallSet<std::string, 32>> {
287-
static void mapping(llvm::yaml::IO &io, custom_flag::DeclarationPtr &V,
288-
llvm::SmallSet<std::string, 32> &NameSet) {
289-
assert(!V);
290-
V = std::make_shared<custom_flag::Declaration>();
291-
io.mapRequired("Name", V->Name);
292-
io.mapRequired("Values", V->ValueList, NameSet);
293-
std::string DefaultValueName;
294-
io.mapRequired("Default", DefaultValueName);
295-
296-
for (auto [Idx, Value] : llvm::enumerate(V->ValueList)) {
297-
Value.Decl = V;
298-
if (Value.Name == DefaultValueName) {
299-
assert(!V->DefaultValueIdx);
300-
V->DefaultValueIdx = Idx;
301-
}
302-
}
303-
}
304-
static std::string validate(IO &io, custom_flag::DeclarationPtr &V,
305-
llvm::SmallSet<std::string, 32> &) {
306-
if (V->Name.empty())
307-
return "custom flag requires a name";
308-
if (V->ValueList.empty())
309-
return "custom flag must have at least one value";
310-
if (!V->DefaultValueIdx)
311-
return "custom flag must have a default value";
312-
return {};
313-
}
314-
};
315-
316258
template <> struct llvm::yaml::MappingTraits<MultilibSetSerialization> {
317259
static void mapping(llvm::yaml::IO &io, MultilibSetSerialization &M) {
318260
io.mapRequired("MultilibVersion", M.MultilibVersion);
319261
io.mapRequired("Variants", M.Multilibs);
320262
io.mapOptional("Groups", M.Groups);
321-
llvm::SmallSet<std::string, 32> NameSet;
322-
io.mapOptionalWithContext("Flags", M.CustomFlagDeclarations, NameSet);
323263
io.mapOptional("Mappings", M.FlagMatchers);
324264
}
325265
static std::string validate(IO &io, MultilibSetSerialization &M) {
@@ -348,6 +288,10 @@ template <> struct llvm::yaml::MappingTraits<MultilibSetSerialization> {
348288
}
349289
};
350290

291+
LLVM_YAML_IS_SEQUENCE_VECTOR(MultilibSerialization)
292+
LLVM_YAML_IS_SEQUENCE_VECTOR(MultilibGroupSerialization)
293+
LLVM_YAML_IS_SEQUENCE_VECTOR(MultilibSet::FlagMatcher)
294+
351295
llvm::ErrorOr<MultilibSet>
352296
MultilibSet::parseYaml(llvm::MemoryBufferRef Input,
353297
llvm::SourceMgr::DiagHandlerTy DiagHandler,
@@ -375,8 +319,7 @@ MultilibSet::parseYaml(llvm::MemoryBufferRef Input,
375319
}
376320
}
377321

378-
return MultilibSet(std::move(Multilibs), std::move(MS.FlagMatchers),
379-
std::move(MS.CustomFlagDeclarations));
322+
return MultilibSet(std::move(Multilibs), std::move(MS.FlagMatchers));
380323
}
381324

382325
LLVM_DUMP_METHOD void MultilibSet::dump() const {

clang/test/Driver/baremetal-multilib-custom-flags-parsing.yaml

Lines changed: 0 additions & 133 deletions
This file was deleted.

0 commit comments

Comments
 (0)