Change AddressClass type from 'enum' to 'enum class'.

If we have a function with signature f(addr_t, AddressClass), it is easy to muddle up the order of arguments without any warnings from compiler. 'enum class' prevents passing integer in place of AddressClass and vice versa.

llvm-svn: 335599
This commit is contained in:
Tatyana Krasnukha
2018-06-26 13:06:54 +00:00
parent bbadbe016f
commit 04803b3ef2
23 changed files with 164 additions and 164 deletions

View File

@@ -865,7 +865,7 @@ uint32_t ObjectFileELF::GetAddressByteSize() const {
AddressClass ObjectFileELF::GetAddressClass(addr_t file_addr) {
Symtab *symtab = GetSymtab();
if (!symtab)
return eAddressClassUnknown;
return AddressClass::eUnknown;
// The address class is determined based on the symtab. Ask it from the
// object file what contains the symtab information.
@@ -874,14 +874,14 @@ AddressClass ObjectFileELF::GetAddressClass(addr_t file_addr) {
return symtab_objfile->GetAddressClass(file_addr);
auto res = ObjectFile::GetAddressClass(file_addr);
if (res != eAddressClassCode)
if (res != AddressClass::eCode)
return res;
auto ub = m_address_class_map.upper_bound(file_addr);
if (ub == m_address_class_map.begin()) {
// No entry in the address class map before the address. Return default
// address class for an address in a code section.
return eAddressClassCode;
return AddressClass::eCode;
}
// Move iterator to the address class entry preceding address
@@ -2167,18 +2167,18 @@ unsigned ObjectFileELF::ParseSymbols(Symtab *symtab, user_id_t start_id,
switch (mapping_symbol) {
case 'a':
// $a[.<any>]* - marks an ARM instruction sequence
m_address_class_map[symbol.st_value] = eAddressClassCode;
m_address_class_map[symbol.st_value] = AddressClass::eCode;
break;
case 'b':
case 't':
// $b[.<any>]* - marks a THUMB BL instruction sequence
// $t[.<any>]* - marks a THUMB instruction sequence
m_address_class_map[symbol.st_value] =
eAddressClassCodeAlternateISA;
AddressClass::eCodeAlternateISA;
break;
case 'd':
// $d[.<any>]* - marks a data item sequence (e.g. lit pool)
m_address_class_map[symbol.st_value] = eAddressClassData;
m_address_class_map[symbol.st_value] = AddressClass::eData;
break;
}
}
@@ -2192,11 +2192,11 @@ unsigned ObjectFileELF::ParseSymbols(Symtab *symtab, user_id_t start_id,
switch (mapping_symbol) {
case 'x':
// $x[.<any>]* - marks an A64 instruction sequence
m_address_class_map[symbol.st_value] = eAddressClassCode;
m_address_class_map[symbol.st_value] = AddressClass::eCode;
break;
case 'd':
// $d[.<any>]* - marks a data item sequence (e.g. lit pool)
m_address_class_map[symbol.st_value] = eAddressClassData;
m_address_class_map[symbol.st_value] = AddressClass::eData;
break;
}
}
@@ -2215,10 +2215,10 @@ unsigned ObjectFileELF::ParseSymbols(Symtab *symtab, user_id_t start_id,
// symbol_value that we store in the symtab.
symbol_value_offset = -1;
m_address_class_map[symbol.st_value ^ 1] =
eAddressClassCodeAlternateISA;
AddressClass::eCodeAlternateISA;
} else {
// This address is ARM
m_address_class_map[symbol.st_value] = eAddressClassCode;
m_address_class_map[symbol.st_value] = AddressClass::eCode;
}
}
}
@@ -2243,17 +2243,17 @@ unsigned ObjectFileELF::ParseSymbols(Symtab *symtab, user_id_t start_id,
llvm_arch == llvm::Triple::mips64 ||
llvm_arch == llvm::Triple::mips64el) {
if (IS_MICROMIPS(symbol.st_other))
m_address_class_map[symbol.st_value] = eAddressClassCodeAlternateISA;
m_address_class_map[symbol.st_value] = AddressClass::eCodeAlternateISA;
else if ((symbol.st_value & 1) && (symbol_type == eSymbolTypeCode)) {
symbol.st_value = symbol.st_value & (~1ull);
m_address_class_map[symbol.st_value] = eAddressClassCodeAlternateISA;
m_address_class_map[symbol.st_value] = AddressClass::eCodeAlternateISA;
} else {
if (symbol_type == eSymbolTypeCode)
m_address_class_map[symbol.st_value] = eAddressClassCode;
m_address_class_map[symbol.st_value] = AddressClass::eCode;
else if (symbol_type == eSymbolTypeData)
m_address_class_map[symbol.st_value] = eAddressClassData;
m_address_class_map[symbol.st_value] = AddressClass::eData;
else
m_address_class_map[symbol.st_value] = eAddressClassUnknown;
m_address_class_map[symbol.st_value] = AddressClass::eUnknown;
}
}
}