llvm-project/compiler-rt
Saleem Abdulrasool 8817bfe7e2 ARM: fix division in some cases
For ARM cores that are ARMv6T2+ but not ARMv7ve or ARMv7-r and not an updated
ARMv7-a that has the idiv extension (chips with clz but not idiv), an incorrect
jump would be calculated due to the preference to thumb instructions over ARM.

Rather than computing the target at runtime, use a jumptable instead.  This
trades a bit of storage for performance.  The overhead is 32-bytes for each of
the three routines, but avoid the calculation of the offset.

Because clz was introduced in ARMv6T2 and idiv in certain versions of ARMv7,
the non-clz, non-idiv case implies a target which does not support Thumb-2, and
thus we cannot use Thumb on those targets (as it is unlikely that the assembly
will assemble).

Take the opportunity to refactor the IT block macros into assembly.h rather than
redefining them in the TUs where they are used.

Existing tests cover the full change already, so no new tests are added.

This effectively reverts SVN r213309.

llvm-svn: 213467
2014-07-20 04:44:21 +00:00
..
SDKs Fix typos 2014-05-15 02:22:34 +00:00
android Move Android ucontext.h out of third_party. 2014-03-18 08:32:14 +00:00
cmake [Sanitizers Win] Move duplicate Windows-specific compiler flags to a common CMake variable 2014-05-30 12:42:57 +00:00
include [ASan] Add ASan debugging API to get malloc/free stack traces and shadow memory mapping info 2014-07-15 17:33:23 +00:00
lib ARM: fix division in some cases 2014-07-20 04:44:21 +00:00
make Fix configure+make build of profile runtime library 2014-07-10 00:53:20 +00:00
test Add FreeBSD support to the address sanitizer's waitid.cc test case 2014-07-18 12:02:42 +00:00
unittests [ASan] Optional support for dynamic ASan runtime on Linux. 2014-04-01 13:16:30 +00:00
www Rewrite compiler-rt.llvm.org to make it relevant 2014-02-27 14:39:48 +00:00
.arcconfig Update arc config to new domain. 2014-04-07 10:22:41 +00:00
.gitignore Add vim swap files to .gitignore 2014-03-20 19:44:33 +00:00
CMakeLists.txt [asan] adding support of 32-bit address sanitizer for MIPS 2014-06-24 12:08:18 +00:00
CODE_OWNERS.TXT Add myself as a c-rt owner of ASan/Win 2014-02-27 12:07:43 +00:00
CREDITS.TXT Add Guan-Hong Liu. 2014-06-16 08:38:19 +00:00
LICENSE.TXT Move Android ucontext.h out of third_party. 2014-03-18 08:32:14 +00:00
Makefile Revert r196490 and fix include paths in makefile-based build 2013-12-05 10:40:11 +00:00
README.txt Moved the builtins documentation to lib/builtins/ 2014-05-28 23:09:45 +00:00

README.txt

Compiler-RT
================================

This directory and its subdirectories contain source code for the compiler
support routines.

Compiler-RT is open source software. You may freely distribute it under the
terms of the license agreement found in LICENSE.txt.

================================