Skip to content

Commit

Permalink
[flang] Change more pointers into references
Browse files Browse the repository at this point in the history
Remove unused interface

Respond to review comments

Original-commit: flang-compiler/f18@7fdfe7b
Reviewed-on: flang-compiler/f18#809
  • Loading branch information
klausler committed Nov 5, 2019
1 parent 65791b2 commit a717d17
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 36 deletions.
4 changes: 0 additions & 4 deletions flang/lib/evaluate/characteristics.h
Expand Up @@ -85,10 +85,6 @@ class TypeAndShape {
const semantics::DeclTypeSpec &);
static std::optional<TypeAndShape> Characterize(
const Expr<SomeType> &, FoldingContext &);
template<typename A>
static std::optional<TypeAndShape> Characterize(const A *p) {
return p ? Characterize(*p) : std::nullopt;
}

DynamicType type() const { return type_; }
TypeAndShape &set_type(DynamicType t) {
Expand Down
8 changes: 4 additions & 4 deletions flang/lib/semantics/mod-file.cc
Expand Up @@ -246,8 +246,8 @@ void ModFileWriter::PutSymbol(
[&](const CommonBlockDetails &x) {
decls_ << "common/" << symbol.name();
char sep = '/';
for (const auto *object : x.objects()) {
decls_ << sep << DEREF(object).name();
for (const Symbol &object : x.objects()) {
decls_ << sep << object.name();
sep = ',';
}
decls_ << '\n';
Expand Down Expand Up @@ -889,8 +889,8 @@ void SubprogramSymbolCollector::DoSymbol(
}
},
[this](const CommonBlockDetails &details) {
for (const Symbol *object : details.objects()) {
DoSymbol(*object);
for (const Symbol &object : details.objects()) {
DoSymbol(object);
}
},
[](const auto &) {},
Expand Down
26 changes: 14 additions & 12 deletions flang/lib/semantics/resolve-names.cc
Expand Up @@ -1105,7 +1105,7 @@ class OmpVisitor : public virtual DeclarationVisitor {
static constexpr Symbol::Flags ompFlagsRequireMark{
Symbol::Flag::OmpThreadprivate};

void AddDataSharingAttributeObject(const Symbol *object) {
void AddDataSharingAttributeObject(SymbolRef object) {
dataSharingAttributeObjects_.insert(object);
}
void ClearDataSharingAttributeObjects() {
Expand All @@ -1126,11 +1126,11 @@ class OmpVisitor : public virtual DeclarationVisitor {
void CheckMultipleAppearances(
const parser::Name &, const Symbol &, Symbol::Flag);

std::set<const Symbol *> dataSharingAttributeObjects_; // on one directive
SymbolSet dataSharingAttributeObjects_; // on one directive
};

bool OmpVisitor::HasDataSharingAttributeObject(const Symbol &object) {
auto it{dataSharingAttributeObjects_.find(&object)};
auto it{dataSharingAttributeObjects_.find(object)};
return it != dataSharingAttributeObjects_.end();
}

Expand Down Expand Up @@ -1190,9 +1190,10 @@ void OmpVisitor::ResolveOmpObject(
// 2.15.3 When a named common block appears in a list, it has the
// same meaning as if every explicit member of the common block
// appeared in the list
for (Symbol *object :
for (const Symbol &object :
symbol->get<CommonBlockDetails>().objects()) {
ResolveOmp(*object, ompFlag);
Symbol &mutableObject{const_cast<Symbol &>(object)};
ResolveOmp(mutableObject, ompFlag);
}
} else {
Say(name.source, // 2.15.3
Expand Down Expand Up @@ -1288,7 +1289,7 @@ void OmpVisitor::CheckMultipleAppearances(
"on the same OpenMP directive"_err_en_US,
name.ToString());
} else {
AddDataSharingAttributeObject(target);
AddDataSharingAttributeObject(*target);
}
}

Expand Down Expand Up @@ -1867,10 +1868,10 @@ void ScopeHandler::SayLocalMustBeVariable(

void ScopeHandler::SayDerivedType(
const SourceName &name, MessageFixedText &&msg, const Scope &type) {
const Symbol *typeSymbol{type.GetSymbol()};
Say(name, std::move(msg), name, DEREF(typeSymbol).name())
.Attach(typeSymbol->name(), "Declaration of derived type '%s'"_en_US,
typeSymbol->name());
const Symbol &typeSymbol{DEREF(type.GetSymbol())};
Say(name, std::move(msg), name, typeSymbol.name())
.Attach(typeSymbol.name(), "Declaration of derived type '%s'"_en_US,
typeSymbol.name());
}
void ScopeHandler::Say2(const SourceName &name1, MessageFixedText &&msg1,
const SourceName &name2, MessageFixedText &&msg2) {
Expand Down Expand Up @@ -4184,8 +4185,9 @@ void DeclarationVisitor::CheckSaveStmts() {
" common block name '%s'"_err_en_US);
}
} else {
for (Symbol *object : symbol->get<CommonBlockDetails>().objects()) {
SetSaveAttr(*object);
for (const Symbol &object :
symbol->get<CommonBlockDetails>().objects()) {
SetSaveAttr(*const_cast<Symbol *>(&object));
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions flang/lib/semantics/symbol.cc
Expand Up @@ -447,8 +447,8 @@ std::ostream &operator<<(std::ostream &os, const Details &details) {
},
[&](const CommonBlockDetails &x) {
os << ':';
for (const auto *object : x.objects()) {
os << ' ' << object->name();
for (const Symbol &object : x.objects()) {
os << ' ' << object.name();
}
},
[&](const FinalProcDetails &) {},
Expand Down
25 changes: 12 additions & 13 deletions flang/lib/semantics/symbol.h
Expand Up @@ -263,11 +263,11 @@ class DerivedTypeDetails {

class ProcBindingDetails : public WithPassArg {
public:
explicit ProcBindingDetails(const Symbol &symbol) : symbol_{&symbol} {}
const Symbol &symbol() const { return *symbol_; }
explicit ProcBindingDetails(const Symbol &symbol) : symbol_{symbol} {}
const Symbol &symbol() const { return symbol_; }

private:
const Symbol *symbol_; // procedure bound to; may be forward
SymbolRef symbol_; // procedure bound to; may be forward
};

ENUM_CLASS(GenericKind, // Kinds of generic-spec
Expand Down Expand Up @@ -304,14 +304,13 @@ class NamelistDetails {

class CommonBlockDetails {
public:
std::list<Symbol *> &objects() { return objects_; }
const std::list<Symbol *> &objects() const { return objects_; }
void add_object(Symbol &object) { objects_.push_back(&object); }
const SymbolVector &objects() const { return objects_; }
void add_object(const Symbol &object) { objects_.emplace_back(object); }
MaybeExpr bindName() const { return bindName_; }
void set_bindName(MaybeExpr &&expr) { bindName_ = std::move(expr); }

private:
std::list<Symbol *> objects_;
SymbolVector objects_;
MaybeExpr bindName_;
};

Expand Down Expand Up @@ -352,14 +351,14 @@ class TypeParamDetails {
class UseDetails {
public:
UseDetails(const SourceName &location, const Symbol &symbol)
: location_{location}, symbol_{&symbol} {}
: location_{location}, symbol_{symbol} {}
const SourceName &location() const { return location_; }
const Symbol &symbol() const { return *symbol_; }
const Symbol &symbol() const { return symbol_; }
const Symbol &module() const;

private:
SourceName location_;
const Symbol *symbol_;
SymbolRef symbol_;
};

// A symbol with ambiguous use-associations. Record where they were so
Expand All @@ -378,11 +377,11 @@ class UseErrorDetails {
// A symbol host-associated from an enclosing scope.
class HostAssocDetails {
public:
HostAssocDetails(const Symbol &symbol) : symbol_{&symbol} {}
const Symbol &symbol() const { return *symbol_; }
HostAssocDetails(const Symbol &symbol) : symbol_{symbol} {}
const Symbol &symbol() const { return symbol_; }

private:
const Symbol *symbol_;
SymbolRef symbol_;
};

class GenericDetails {
Expand Down
2 changes: 1 addition & 1 deletion flang/lib/semantics/tools.cc
Expand Up @@ -88,7 +88,7 @@ bool IsGenericDefinedOp(const Symbol &symbol) {

bool IsCommonBlockContaining(const Symbol &block, const Symbol &object) {
const auto &objects{block.get<CommonBlockDetails>().objects()};
auto found{std::find(objects.begin(), objects.end(), &object)};
auto found{std::find(objects.begin(), objects.end(), object)};
return found != objects.end();
}

Expand Down

0 comments on commit a717d17

Please sign in to comment.