summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/AArch64/switch-unreachable-default.ll
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2019-03-06 15:23:50 +0000
committerAlexander Kornienko <alexfh@google.com>2019-03-06 15:23:50 +0000
commit3d467a890e35edd913f8dee394da00744a1b58ce (patch)
tree3221f4b5474a8beb22a5e31124b57edf19c4a56a /llvm/test/CodeGen/AArch64/switch-unreachable-default.ll
parentb8a847c0a3edc4165afce9e2449737751bd34f78 (diff)
downloadbcm5719-llvm-3d467a890e35edd913f8dee394da00744a1b58ce.tar.gz
bcm5719-llvm-3d467a890e35edd913f8dee394da00744a1b58ce.zip
Revert "[CodeGen] Omit range checks from jump tables when lowering switches with unreachable default"
This reverts commit 2a0f2c5ef3330846149598220467d9f3c6e8b99c (r355490). The commit causes an assertion failure when compiling LLVM code: $ cat repro.cpp class QQQ { public: bool x() const; bool y() const; unsigned getSizeInBits() const { if (y() || x()) return getScalarSizeInBits(); return getScalarSizeInBits() * 2; } unsigned getScalarSizeInBits() const; }; int f(const QQQ &Ty) { switch (Ty.getSizeInBits()) { case 1: case 8: return 0; case 16: return 1; case 32: return 2; case 64: return 3; default: __builtin_unreachable(); } } $ clang -O2 -o repro.o repro.cpp assert.h assertion failed at llvm/include/llvm/ADT/ilist_iterator.h:139 in llvm::ilist_iterator::reference llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::MachineInstr, true, true, void>, true, false>::operator*() const [OptionsT = llvm::ilist_detail::node_options<llvm::MachineInstr, true, true, void>, IsReverse = true, IsConst = false]: !NodePtr->isKnownSentinel() *** Check failure stack trace: *** @ 0x558aab4afc10 __assert_fail @ 0x558aa885479b llvm::ilist_iterator<>::operator*() @ 0x558aa8854715 llvm::MachineInstrBundleIterator<>::operator*() @ 0x558aa92c33c3 llvm::X86InstrInfo::optimizeCompareInstr() @ 0x558aa9a9c251 (anonymous namespace)::PeepholeOptimizer::optimizeCmpInstr() @ 0x558aa9a9b371 (anonymous namespace)::PeepholeOptimizer::runOnMachineFunction() @ 0x558aa99a4fc8 llvm::MachineFunctionPass::runOnFunction() @ 0x558aab019fc4 llvm::FPPassManager::runOnFunction() @ 0x558aab01a3a5 llvm::FPPassManager::runOnModule() @ 0x558aab01aa9b (anonymous namespace)::MPPassManager::runOnModule() @ 0x558aab01a635 llvm::legacy::PassManagerImpl::run() @ 0x558aab01afe1 llvm::legacy::PassManager::run() @ 0x558aa5914769 (anonymous namespace)::EmitAssemblyHelper::EmitAssembly() @ 0x558aa5910f44 clang::EmitBackendOutput() @ 0x558aa5906135 clang::BackendConsumer::HandleTranslationUnit() @ 0x558aa6d165ad clang::ParseAST() @ 0x558aa6a94e22 clang::ASTFrontendAction::ExecuteAction() @ 0x558aa590255d clang::CodeGenAction::ExecuteAction() @ 0x558aa6a94840 clang::FrontendAction::Execute() @ 0x558aa6a38cca clang::CompilerInstance::ExecuteAction() @ 0x558aa4e2294b clang::ExecuteCompilerInvocation() @ 0x558aa4df6200 cc1_main() @ 0x558aa4e1b37f ExecuteCC1Tool() @ 0x558aa4e1a725 main @ 0x7ff20d56abbd __libc_start_main @ 0x558aa4df51c9 _start llvm-svn: 355515
Diffstat (limited to 'llvm/test/CodeGen/AArch64/switch-unreachable-default.ll')
-rw-r--r--llvm/test/CodeGen/AArch64/switch-unreachable-default.ll63
1 files changed, 0 insertions, 63 deletions
diff --git a/llvm/test/CodeGen/AArch64/switch-unreachable-default.ll b/llvm/test/CodeGen/AArch64/switch-unreachable-default.ll
deleted file mode 100644
index ce11c14d1ca..00000000000
--- a/llvm/test/CodeGen/AArch64/switch-unreachable-default.ll
+++ /dev/null
@@ -1,63 +0,0 @@
-; RUN: llc -O3 -o - %s | FileCheck %s
-
-; Test that the output in the presence of an unreachable default does not have
-; a compare and branch at the top of the switch to handle the default case.
-
-target triple = "aarch64-unknown-linux-gnu"
-
-; Function Attrs: nounwind
-define void @fn(i4) {
- switch i4 %0, label %default [
- i4 0, label %case_0
- i4 1, label %case_1
- i4 2, label %case_2
- i4 3, label %case_3
- i4 4, label %case_4
- i4 5, label %case_5
- ]
-
-; CHECK-LABEL: fn:
-; CHECK-NOT: sub
-; CHECK-NOT: cmp
-; CHECK-NOT: b.hi
-; CHECK: ldrb {{w[0-9]+}}, [{{x[0-9]+}}, {{x[0-9]+}}]
-; CHECK: add {{x[0-9]+}}, {{x[0-9]+}}, {{x[0-9]+}}, lsl #2
-; CHECK: br {{x[0-9]+}}
-
-default:
- unreachable
-
-case_0:
- tail call void @handle_case_00(i4 %0) #2
- br label %return_label
-
-case_1:
- tail call void @handle_case_01(i4 %0) #2
- br label %return_label
-
-case_2:
- tail call void @handle_case_02(i4 %0) #2
- br label %return_label
-
-case_3:
- tail call void @handle_case_03(i4 %0) #2
- br label %return_label
-
-case_4:
- tail call void @handle_case_04(i4 %0) #2
- br label %return_label
-
-case_5:
- tail call void @handle_case_05(i4 %0) #2
- br label %return_label
-
-return_label:
- ret void
-}
-
-declare void @handle_case_00(i4)
-declare void @handle_case_01(i4)
-declare void @handle_case_02(i4)
-declare void @handle_case_03(i4)
-declare void @handle_case_04(i4)
-declare void @handle_case_05(i4)
OpenPOWER on IntegriCloud