Skip to content

Commit d6b2cf1

Browse files
author
Stepan Dyatkovskiy
committed
C++ Levitation, Levitation Driver: Fixed llvm#34: added use of clang driver for instantiation stage.
1 parent 4392947 commit d6b2cf1

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

clang/lib/Levitation/Driver/Driver.cpp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -385,10 +385,9 @@ class Commands {
385385
bool verbose,
386386
bool dryRun
387387
) {
388-
auto Cmd = getBase(BinDir, PrecompiledPreamble, verbose, dryRun);
388+
auto Cmd = getClangXXCommand(BinDir, verbose, dryRun);
389389
Cmd
390-
.addArg("-flevitation-build-decl")
391-
.addArg("-emit-pch");
390+
.addArg("-cppl-inst-decl");
392391
return Cmd;
393392
}
394393

@@ -398,10 +397,9 @@ class Commands {
398397
bool verbose,
399398
bool dryRun
400399
) {
401-
auto Cmd = getBase(BinDir, PrecompiledPreamble, verbose, dryRun);
400+
auto Cmd = getClangXXCommand(BinDir, verbose, dryRun);
402401
Cmd
403-
.addArg("-flevitation-build-object")
404-
.addArg("-emit-obj");
402+
.addArg("-cppl-compile");
405403
return Cmd;
406404
}
407405
static CommandInfo getCompileSrc(
@@ -450,6 +448,12 @@ class Commands {
450448
return *this;
451449
}
452450

451+
CommandInfo& addKVArgEqIfNotEmpty(StringRef Arg, StringRef Value) {
452+
if (Value.size())
453+
addKVArgEq(Arg, Value);
454+
return *this;
455+
}
456+
453457
template <typename ValuesT>
454458
CommandInfo& addArgs(const ValuesT& Values) {
455459
for (const auto &Value : Values) {
@@ -636,7 +640,8 @@ class Commands {
636640
auto ExecutionStatus = CommandInfo::getInstDecl(
637641
BinDir, PrecompiledPreamble, Verbose, DryRun
638642
)
639-
.addKVArgsEq("-levitation-dependency", Deps)
643+
.addKVArgEqIfNotEmpty("-cppl-include-preamble", PrecompiledPreamble)
644+
.addKVArgsEq("-cppl-include-dependency", Deps)
640645
.addArgs(ExtraArgs)
641646
.addArg(InputObject)
642647
.addKVArgSpace("-o", OutDeclASTFile)
@@ -665,7 +670,8 @@ class Commands {
665670
auto ExecutionStatus = CommandInfo::getInstObj(
666671
BinDir, PrecompiledPreamble, Verbose, DryRun
667672
)
668-
.addKVArgsEq("-levitation-dependency", Deps)
673+
.addKVArgEqIfNotEmpty("-cppl-include-preamble", PrecompiledPreamble)
674+
.addKVArgsEq("-cppl-include-dependency", Deps)
669675
.addArgs(ExtraArgs)
670676
.addArg(InputObject)
671677
.addKVArgSpace("-o", OutObjFile)
@@ -721,7 +727,7 @@ class Commands {
721727
auto ExecutionStatus = CommandInfo::getCompileSrc(
722728
BinDir, PrecompiledPreamble, Verbose, DryRun
723729
)
724-
.addKVArgsEq("-levitation-dependency", Deps)
730+
.addKVArgsEq("-cppl-include-dependency", Deps)
725731
.addArgs(ExtraParseArgs)
726732
.addArgs(ExtraCodeGenArgs)
727733
.addArg(InputObject)

0 commit comments

Comments
 (0)