[NFC][AIX] Use assert instead of llvm_unreachable

Addresses post-commit comments on https://reviews.llvm.org/D64825. Use
assert instead of llvm_unreachable to check if invalid csect types are being
generated. Use report_fatal_error on unimplemented XCOFF features.

Differential Revision: https://reviews.llvm.org/D64825

llvm-svn: 368720
This commit is contained in:
David Tenty 2019-08-13 17:04:51 +00:00
parent 7185a7301e
commit 9bf01e53a3
4 changed files with 12 additions and 12 deletions

View File

@ -544,7 +544,7 @@ public:
/// \param ByteAlignment - The alignment of the symbol in bytes. Must be a power
/// of 2.
virtual void EmitXCOFFLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
unsigned ByteAlignment);
unsigned ByteAlignment);
/// Emit an ELF .size directive.
///

View File

@ -759,14 +759,14 @@ void MCAsmStreamer::EmitCOFFImgRel32(MCSymbol const *Symbol, int64_t Offset) {
EmitEOL();
}
// We need an XCOFF specific version of this directive as the AIX syntax
// We need an XCOFF-specific version of this directive as the AIX syntax
// requires a QualName argument identifying the csect name and storage mapping
// class to appear before the alignment if we are specifying it.
void MCAsmStreamer::EmitXCOFFLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
unsigned ByteAlignment) {
assert(MAI->getLCOMMDirectiveAlignmentType() == LCOMM::Log2Alignment &&
"We only support writing log base-2 alignment format with XCOFF");
assert(isPowerOf2_32(ByteAlignment) && "alignment must be a power of 2");
"We only support writing log base-2 alignment format with XCOFF.");
assert(isPowerOf2_32(ByteAlignment) && "Alignment must be a power of 2.");
OS << "\t.lcomm\t";
Symbol->print(OS, MAI);

View File

@ -29,12 +29,12 @@ void MCSectionXCOFF::PrintSwitchToSection(const MCAsmInfo &MAI, const Triple &T,
}
if (getKind().isBSSLocal() || getKind().isCommon()) {
if (getMappingClass() != XCOFF::XMC_RW &&
getMappingClass() != XCOFF::XMC_BS)
llvm_unreachable("Generated a storage-mapping class for a common/bss "
"csect we don't understand how to switch to.");
if (getCSectType() != XCOFF::XTY_CM)
llvm_unreachable("wrong csect type for .bss csect");
assert((getMappingClass() == XCOFF::XMC_RW ||
getMappingClass() == XCOFF::XMC_BS) &&
"Generated a storage-mapping class for a common/bss csect we don't "
"understand how to switch to.");
assert(getCSectType() == XCOFF::XTY_CM &&
"wrong csect type for .bss csect");
// Don't have to print a directive for switching to section for commons.
// '.comm' and '.lcomm' directives for the variable will create the needed
// csect.

View File

@ -60,5 +60,5 @@ MCStreamer *llvm::createXCOFFStreamer(MCContext &Context,
void MCXCOFFStreamer::EmitXCOFFLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
unsigned ByteAlign) {
llvm_unreachable("Not implemented yet.");
}
report_fatal_error("Emission of local commons not implemented yet.");
}