[llvm] r211254 - Convert some assert(0) to llvm_unreachable or fold an 'if' condition into the assert.

Duncan P. N. Exon Smith dexonsmith at apple.com
Thu Jun 19 09:25:44 PDT 2014


> On 2014-Jun-18, at 23:10, Craig Topper <craig.topper at gmail.com> wrote:
> 
> Author: ctopper
> Date: Thu Jun 19 01:10:58 2014
> New Revision: 211254
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=211254&view=rev
> Log:
> Convert some assert(0) to llvm_unreachable or fold an 'if' condition into the assert.

Nice cleanup!  I spotted some `return`s that are now unreachable.

> Modified:
>    llvm/trunk/include/llvm/Support/StreamableMemoryObject.h
>    llvm/trunk/lib/MC/ELFObjectWriter.cpp
>    llvm/trunk/lib/TableGen/Record.cpp
>    llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp
>    llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
>    llvm/trunk/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
>    llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
>    llvm/trunk/lib/Target/ARM/A15SDOptimizer.cpp
>    llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
>    llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp
>    llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h
>    llvm/trunk/lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp
>    llvm/trunk/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
>    llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
>    llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp
> 
> Modified: llvm/trunk/include/llvm/Support/StreamableMemoryObject.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/StreamableMemoryObject.h?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/StreamableMemoryObject.h (original)
> +++ llvm/trunk/include/llvm/Support/StreamableMemoryObject.h Thu Jun 19 01:10:58 2014
> @@ -13,6 +13,7 @@
> 
> #include "llvm/Support/Compiler.h"
> #include "llvm/Support/DataStream.h"
> +#include "llvm/Support/ErrorHandling.h"
> #include "llvm/Support/MemoryObject.h"
> #include <cassert>
> #include <memory>
> @@ -115,7 +116,7 @@ public:
>     // requiring that the bitcode size be known, or otherwise ensuring that
>     // the memory doesn't go away/get reallocated, but it's
>     // not currently necessary. Users that need the pointer don't stream.
> -    assert(0 && "getPointer in streaming memory objects not allowed");
> +    llvm_unreachable("getPointer in streaming memory objects not allowed");
>     return nullptr;
>   }
>   bool isValidAddress(uint64_t address) const override;
> @@ -154,8 +155,8 @@ private:
>                                         kChunkSize);
>       BytesRead += bytes;
>       if (bytes < kChunkSize) {
> -        if (ObjectSize && BytesRead < Pos)
> -          assert(0 && "Unexpected short read fetching bitcode");
> +        assert((!ObjectSize || BytesRead >= Pos) &&
> +               "Unexpected short read fetching bitcode");
>         if (BytesRead <= Pos) { // reached EOF/ran out of bytes
>           ObjectSize = BytesRead;
>           EOFReached = true;
> 
> Modified: llvm/trunk/lib/MC/ELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/ELFObjectWriter.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/ELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/MC/ELFObjectWriter.cpp Thu Jun 19 01:10:58 2014
> @@ -1574,8 +1574,7 @@ void ELFObjectWriter::WriteSection(MCAss
>     break;
> 
>   default:
> -    assert(0 && "FIXME: sh_type value not supported!");
> -    break;
> +    llvm_unreachable("FIXME: sh_type value not supported!");
>   }
> 
>   if (TargetObjectWriter->getEMachine() == ELF::EM_ARM &&
> 
> Modified: llvm/trunk/lib/TableGen/Record.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/TableGen/Record.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/TableGen/Record.cpp (original)
> +++ llvm/trunk/lib/TableGen/Record.cpp Thu Jun 19 01:10:58 2014
> @@ -811,20 +811,14 @@ Init *UnOpInit::Fold(Record *CurRec, Mul
>   }
>   case HEAD: {
>     if (ListInit *LHSl = dyn_cast<ListInit>(LHS)) {
> -      if (LHSl->getSize() == 0) {
> -        assert(0 && "Empty list in car");
> -        return nullptr;
> -      }
> +      assert(LHSl->getSize() != 0 && "Empty list in car");
>       return LHSl->getElement(0);
>     }
>     break;
>   }
>   case TAIL: {
>     if (ListInit *LHSl = dyn_cast<ListInit>(LHS)) {
> -      if (LHSl->getSize() == 0) {
> -        assert(0 && "Empty list in cdr");
> -        return nullptr;
> -      }
> +      assert(LHSl->getSize() != 0 && "Empty list in cdr");
>       // Note the +1.  We can't just pass the result of getValues()
>       // directly.
>       ArrayRef<Init *>::iterator begin = LHSl->getValues().begin()+1;
> 
> Modified: llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp Thu Jun 19 01:10:58 2014
> @@ -823,8 +823,7 @@ AArch64TargetLowering::EmitInstrWithCust
> #ifndef NDEBUG
>     MI->dump();
> #endif
> -    assert(0 && "Unexpected instruction for custom inserter!");
> -    break;
> +    llvm_unreachable("Unexpected instruction for custom inserter!");
> 
>   case AArch64::F128CSEL:
>     return EmitF128CSEL(MI, BB);
> @@ -833,7 +832,6 @@ AArch64TargetLowering::EmitInstrWithCust
>   case TargetOpcode::PATCHPOINT:
>     return emitPatchPoint(MI, BB);
>   }
> -  llvm_unreachable("Unexpected instruction for custom inserter!");
> }
> 
> //===----------------------------------------------------------------------===//
> 
> Modified: llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp Thu Jun 19 01:10:58 2014
> @@ -3447,8 +3447,7 @@ bool AArch64AsmParser::showMatchError(SM
>   case Match_MnemonicFail:
>     return Error(Loc, "unrecognized instruction mnemonic");
>   default:
> -    assert(0 && "unexpected error code!");
> -    return Error(Loc, "invalid instruction format");
> +    llvm_unreachable("unexpected error code!");
>   }
> }
> 
> 
> Modified: llvm/trunk/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp Thu Jun 19 01:10:58 2014
> @@ -37,8 +37,7 @@ getVariant(uint64_t LLVMDisassembler_Var
>   case LLVMDisassembler_VariantKind_ARM64_TLVP:
>   case LLVMDisassembler_VariantKind_ARM64_TLVOFF:
>   default:
> -    assert(0 && "bad LLVMDisassembler_VariantKind");
> -    return MCSymbolRefExpr::VK_None;
> +    llvm_unreachable("bad LLVMDisassembler_VariantKind");
>   }
> }
> 
> 
> Modified: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp Thu Jun 19 01:10:58 2014
> @@ -218,13 +218,9 @@ AArch64MCCodeEmitter::getMachineOpValue(
>                                         const MCSubtargetInfo &STI) const {
>   if (MO.isReg())
>     return Ctx.getRegisterInfo()->getEncodingValue(MO.getReg());
> -  else {
> -    assert(MO.isImm() && "did not expect relocated expression");
> -    return static_cast<unsigned>(MO.getImm());
> -  }
> 
> -  assert(0 && "Unable to encode MCOperand!");
> -  return 0;
> +  assert(MO.isImm() && "did not expect relocated expression");
> +  return static_cast<unsigned>(MO.getImm());
> }
> 
> template<unsigned FixupKind> uint32_t
> 
> Modified: llvm/trunk/lib/Target/ARM/A15SDOptimizer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/A15SDOptimizer.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/A15SDOptimizer.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/A15SDOptimizer.cpp Thu Jun 19 01:10:58 2014
> @@ -321,8 +321,7 @@ unsigned A15SDOptimizer::optimizeSDPatte
>       return optimizeAllLanesPattern(MI, MI->getOperand(0).getReg());
>   }
> 
> -  assert(0 && "Unhandled update pattern!");
> -  return 0;
> +  llvm_unreachable("Unhandled update pattern!");
> }
> 
> // Return true if this MachineInstr inserts a scalar (SPR) value into
> 
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp Thu Jun 19 01:10:58 2014
> @@ -1047,8 +1047,7 @@ ARMMCCodeEmitter::getHiLo16ImmOpValue(co
>   // we have a movt or a movw, but that led to misleadingly results.
>   // This is now disallowed in the the AsmParser in validateInstruction()
>   // so this should never happen.
> -  assert(0 && "expression without :upper16: or :lower16:");
> -  return 0;
> +  llvm_unreachable("expression without :upper16: or :lower16:");
> }
> 
> uint32_t ARMMCCodeEmitter::
> 
> Modified: llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp (original)
> +++ llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp Thu Jun 19 01:10:58 2014
> @@ -1538,14 +1538,13 @@ int HexagonInstrInfo::GetDotOldOp(const
>   int NewOp = opc;
>   if (isPredicated(NewOp) && isPredicatedNew(NewOp)) { // Get predicate old form
>     NewOp = Hexagon::getPredOldOpcode(NewOp);
> -    if (NewOp < 0)
> -      assert(0 && "Couldn't change predicate new instruction to its old form.");
> +    assert(NewOp >= 0 &&
> +           "Couldn't change predicate new instruction to its old form.");
>   }
> 
>   if (isNewValueStore(NewOp)) { // Convert into non-new-value format
>     NewOp = Hexagon::getNonNVStore(NewOp);
> -    if (NewOp < 0)
> -      assert(0 && "Couldn't change new-value store to its old form.");
> +    assert(NewOp >= 0 && "Couldn't change new-value store to its old form.");
>   }
>   return NewOp;
> }
> 
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h Thu Jun 19 01:10:58 2014
> @@ -65,7 +65,7 @@ public:
>                              const MCRelaxableFragment *DF,
>                              const MCAsmLayout &Layout) const override {
>     // FIXME.
> -    assert(0 && "RelaxInstruction() unimplemented");
> +    llvm_unreachable("RelaxInstruction() unimplemented");
>     return false;

This return can be removed now.

>   }
> 
> 
> Modified: llvm/trunk/lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp (original)
> +++ llvm/trunk/lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp Thu Jun 19 01:10:58 2014
> @@ -172,17 +172,13 @@ uint64_t R600MCCodeEmitter::getMachineOp
>                                         SmallVectorImpl<MCFixup> &Fixup,
>                                         const MCSubtargetInfo &STI) const {
>   if (MO.isReg()) {
> -    if (HAS_NATIVE_OPERANDS(MCII.get(MI.getOpcode()).TSFlags)) {
> +    if (HAS_NATIVE_OPERANDS(MCII.get(MI.getOpcode()).TSFlags))
>       return MRI.getEncodingValue(MO.getReg());
> -    } else {
> -      return getHWReg(MO.getReg());
> -    }
> -  } else if (MO.isImm()) {
> -    return MO.getImm();
> -  } else {
> -    assert(0);
> -    return 0;
> +    return getHWReg(MO.getReg());
>   }
> +
> +  assert(MO.isImm());
> +  return MO.getImm();
> }
> 
> #include "AMDGPUGenMCCodeEmitter.inc"
> 
> Modified: llvm/trunk/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp (original)
> +++ llvm/trunk/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp Thu Jun 19 01:10:58 2014
> @@ -173,6 +173,6 @@ void SparcInstPrinter::printCCOperand(co
> bool SparcInstPrinter::printGetPCX(const MCInst *MI, unsigned opNum,
>                                   raw_ostream &O)
> {
> -  assert(0 && "FIXME: Implement SparcInstPrinter::printGetPCX.");
> +  llvm_unreachable("FIXME: Implement SparcInstPrinter::printGetPCX.");
>   return true;

This return can be removed now.

> }
> 
> Modified: llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp (original)
> +++ llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp Thu Jun 19 01:10:58 2014
> @@ -196,7 +196,7 @@ namespace {
>                               const MCRelaxableFragment *DF,
>                               const MCAsmLayout &Layout) const override {
>       // FIXME.
> -      assert(0 && "fixupNeedsRelaxation() unimplemented");
> +      llvm_unreachable("fixupNeedsRelaxation() unimplemented");
>       return false;

This return can be removed now.

>     }
>     void relaxInstruction(const MCInst &Inst, MCInst &Res) const override {
> 
> Modified: llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp?rev=211254&r1=211253&r2=211254&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp (original)
> +++ llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp Thu Jun 19 01:10:58 2014
> @@ -133,7 +133,7 @@ getMachineOpValue(const MCInst &MI, cons
>   if (Expr->EvaluateAsAbsolute(Res))
>     return Res;
> 
> -  assert(0 && "Unhandled expression!");
> +  llvm_unreachable("Unhandled expression!");
>   return 0;

This return can be removed now.

> }
> 
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list