1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
Go to file
Sanjay Patel 790c02f096 Make the sqrt intrinsic return undef for a negative input.
As discussed here:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20140609/220598.html

And again here:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-September/077168.html

The sqrt of a negative number when using the llvm intrinsic is undefined. 
We should return undef rather than 0.0 to match the definition in the LLVM IR lang ref.

This change should not affect any code that isn't using "no-nans-fp-math"; 
ie, no-nans is a requirement for generating the llvm intrinsic in place of a sqrt function call.

Unfortunately, the behavior introduced by this patch will not match current gcc, xlc, icc, and 
possibly other compilers. The current clang/llvm behavior of returning 0.0 doesn't either. 
We knowingly approve of this difference with the other compilers in an attempt to flag code 
that is invoking undefined behavior.

A front-end warning should also try to convince the user that the program will fail:
http://llvm.org/bugs/show_bug.cgi?id=21093

Differential Revision: http://reviews.llvm.org/D5527

llvm-svn: 218803
2014-10-01 20:36:33 +00:00
autoconf Delete support for AuroraUX. 2014-08-14 15:15:09 +00:00
bindings Reinstate "Nuke the old JIT." 2014-09-02 22:28:02 +00:00
cmake Add LLVM_ENABLE_MODULES flag to CMake to enable building with C++ modules. 2014-09-26 22:40:15 +00:00
docs Move the complex address expression out of DIVariable and into an extra 2014-10-01 18:55:02 +00:00
examples Add doInitialization/doFinalization to DataLayoutPass. 2014-09-10 21:27:43 +00:00
include DIBuilder: Encapsulate DIExpression's element type 2014-10-01 20:26:08 +00:00
lib Make the sqrt intrinsic return undef for a negative input. 2014-10-01 20:36:33 +00:00
projects [cmake] Use the external project machinery for libcxxabi so that it can 2014-07-25 10:27:40 +00:00
test Make the sqrt intrinsic return undef for a negative input. 2014-10-01 20:36:33 +00:00
tools LTO: Ignore disabled diagnostic remarks 2014-10-01 18:36:03 +00:00
unittests Move the complex address expression out of DIVariable and into an extra 2014-10-01 18:55:02 +00:00
utils [X86 disasm tblegen backend] Clean up numPhysicalOperands asserts 2014-10-01 19:28:11 +00:00
.arcconfig Updated phabricator server. 2014-04-07 03:57:04 +00:00
.clang-format Test commit. 2014-03-02 13:08:46 +00:00
.clang-tidy Add .clang-tidy configuration file to provide LLVM-optimized defaults for 2014-09-08 13:30:00 +00:00
.gitignore Add Polly to the ignored trees. 2014-06-25 13:13:36 +00:00
CMakeLists.txt Add LLVM_ENABLE_MODULES flag to CMake to enable building with C++ modules. 2014-09-26 22:40:15 +00:00
CODE_OWNERS.TXT Add Tom Stellard's role as 3.5 release manager. 2014-09-12 08:07:31 +00:00
configure Delete support for AuroraUX. 2014-08-14 15:15:09 +00:00
CREDITS.TXT Rise from the dead and update personal info 2014-08-25 17:51:04 +00:00
LICENSE.TXT Remove projects/sample. 2014-03-12 22:40:22 +00:00
llvm.spec.in
LLVMBuild.txt Remove the very substantial, largely unmaintained legacy PGO 2013-10-02 15:42:23 +00:00
Makefile [configure/make] Propagate names of build host tools when making BuildTools 2014-03-25 21:45:41 +00:00
Makefile.common
Makefile.config.in Track clang r213171 2014-07-16 16:50:34 +00:00
Makefile.rules Revert my earlier change to add "all" as a dependency to check. In 2014-09-19 18:44:27 +00:00
README.txt Trivial test commit. 2014-04-26 19:05:45 +00:00

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

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

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.