Go to file
Akira Hatanaka 0d0c78180d ARM: Fix a bug which was causing convergence failure in constant-island pass.
The bug is in ARMConstantIslands::createNewWater where the upper bound of the
new water split point is computed:

// This could point off the end of the block if we've already got constant
// pool entries following this block; only the last one is in the water list.
// Back past any possible branches (allow for a conditional and a maximally
// long unconditional).
if (BaseInsertOffset + 8 >= UserBBI.postOffset()) {
  BaseInsertOffset = UserBBI.postOffset() - UPad - 8;
  DEBUG(dbgs() << format("Move inside block: %#x\n", BaseInsertOffset));
}

The split point is supposed to be somewhere between the machine instruction that
loads from the constant pool entry and the end of the basic block, before branch
instructions. The code above is fine if the basic block is large enough and
there are a sufficient number of instructions following the machine instruction.
However, if the machine instruction is near the end of the basic block,
BaseInsertOffset can point to the machine instruction or another instruction
that precedes it, and this can lead to convergence failure.

This commit fixes this bug by ensuring BaseInsertOffset is larger than the
offset of the instruction following the constant-loading instruction.

rdar://problem/18581150

llvm-svn: 220015
2014-10-17 01:31:47 +00:00
clang Switch to range-based for loop. No functionality change. 2014-10-17 01:26:52 +00:00
clang-tools-extra [clang-tidy] Minor fixes for the NamespaceCommentCheck. 2014-10-16 15:11:54 +00:00
compiler-rt [asan] the run-time part of intra-object-overflow detector (-fsanitize-address-field-padding=1). Note that all of this is still experimental; don't use unless you are brave. 2014-10-17 01:22:37 +00:00
debuginfo-tests Always compile debuginfo-tests for the host triple 2014-10-16 23:43:34 +00:00
libclc r600: Use llvm intrinsic to read work dimension information 2014-10-15 15:08:06 +00:00
libcxx [libcxx] Fix SFINAE in <cmath>. Patch from K-Ballo. 2014-10-17 00:31:47 +00:00
libcxxabi Correctly export _Unwind_[GS]et(GR|IP) for EHABI. 2014-10-13 21:01:30 +00:00
lld [CMake] lld: Introduce ${cmake_2_8_12_INTERFACE} onto each target_link_libraries. [PR20254] 2014-10-17 00:37:49 +00:00
lldb Making all @expectedFailure markers take an explicit bugnumber annotation. This used to be optional, but that makes it harder to track what tests are failing for what reason. So, make it mandatory, in the form of refusing to run the test suite if annotations are missing 2014-10-17 01:11:29 +00:00
llvm ARM: Fix a bug which was causing convergence failure in constant-island pass. 2014-10-17 01:31:47 +00:00
openmp I apologise in advance for the size of this check-in. At Intel we do 2014-10-07 16:25:50 +00:00
polly [Refactor][NfC] ReportLevel should be used as a bool not an int 2014-10-15 23:24:28 +00:00