[flang] Fix flang-compiler/f18#425, build fail with libc++

Original-commit: flang-compiler/f18@96a553b189
Reviewed-on: https://github.com/flang-compiler/f18/pull/426
This commit is contained in:
peter klausler 2019-04-22 10:10:09 -07:00
parent ffb2704be1
commit 6d93fd2e54
4 changed files with 16 additions and 8 deletions

View file

@ -20,6 +20,12 @@
namespace Fortran::evaluate {
ActualArgument::ActualArgument(Expr<SomeType> &&x) : u_{std::move(x)} {}
ActualArgument::ActualArgument(common::CopyableIndirection<Expr<SomeType>> &&v)
: u_{std::move(v)} {}
ActualArgument::ActualArgument(AssumedType x) : u_{x} {}
ActualArgument::~ActualArgument() {}
ActualArgument::AssumedType::AssumedType(const semantics::Symbol &symbol)
: symbol_{&symbol} {
const semantics::DeclTypeSpec *type{symbol.GetType()};

View file

@ -59,11 +59,10 @@ public:
const semantics::Symbol *symbol_;
};
explicit ActualArgument(Expr<SomeType> &&x) : u_{std::move(x)} {}
explicit ActualArgument(common::CopyableIndirection<Expr<SomeType>> &&v)
: u_{std::move(v)} {}
explicit ActualArgument(AssumedType x) : u_{x} {}
explicit ActualArgument(Expr<SomeType> &&);
explicit ActualArgument(common::CopyableIndirection<Expr<SomeType>> &&);
explicit ActualArgument(AssumedType);
~ActualArgument();
ActualArgument &operator=(Expr<SomeType> &&);
Expr<SomeType> *GetExpr() {

View file

@ -187,6 +187,9 @@ bool IsOptional(const DummyArgument &da) {
da);
}
FunctionResult::FunctionResult(DynamicType t) : u{TypeAndShape{t}} {}
FunctionResult::FunctionResult(TypeAndShape &&t) : u{std::move(t)} {}
FunctionResult::FunctionResult(Procedure &&p) : u{std::move(p)} {}
FunctionResult::~FunctionResult() = default;
bool FunctionResult::operator==(const FunctionResult &that) const {

View file

@ -127,9 +127,9 @@ std::optional<DummyArgument> CharacterizeDummyArgument(
struct FunctionResult {
ENUM_CLASS(Attr, Allocatable, Pointer, Contiguous)
DECLARE_CONSTRUCTORS_AND_ASSIGNMENTS(FunctionResult)
explicit FunctionResult(DynamicType t) : u{TypeAndShape{t}} {}
explicit FunctionResult(TypeAndShape &&t) : u{std::move(t)} {}
explicit FunctionResult(Procedure &&p) : u{std::move(p)} {}
explicit FunctionResult(DynamicType);
explicit FunctionResult(TypeAndShape &&);
explicit FunctionResult(Procedure &&);
~FunctionResult();
bool operator==(const FunctionResult &) const;
static std::optional<FunctionResult> Characterize(