llvm/unittests/IR
Sanjay Patel a3a48d96c9 add fast-math-flags to 'call' instructions (PR21290)
This patch adds optional fast-math-flags (the same that apply to fmul/fadd/fsub/fdiv/frem/fcmp)
to call instructions in IR. Follow-up patches would use these flags in LibCallSimplifier, add 
support to clang, and extend FMF to the DAG for calls.

Motivating example:

%y = fmul fast float %x, %x
%z = tail call float @sqrtf(float %y)

We'd like to be able to optimize sqrt(x*x) into fabs(x). We do this today using a function-wide
attribute for unsafe-math, but we really want to trigger on the instructions themselves:

%z = tail call fast float @sqrtf(float %y)

because in an LTO build it's possible that calls with fast semantics have been inlined into a
function with non-fast semantics.

The code changes and tests are based on the recent commits that added "notail":
http://reviews.llvm.org/rL252368

and added FMF to fcmp:
http://reviews.llvm.org/rL241901

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255555 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-14 21:59:03 +00:00
..
AttributesTest.cpp
CMakeLists.txt [PM/AA] Remove the last relics of the separate IPA library from LLVM, 2015-08-18 17:51:53 +00:00
ConstantRangeTest.cpp [IR] Add a makeNoWrapRegion method to ConstantRange 2015-10-22 03:12:57 +00:00
ConstantsTest.cpp [ConstantFold] Fix bitcast to gep constant folding transform. 2015-12-14 19:30:32 +00:00
DebugInfoTest.cpp
DominatorTreeTest.cpp unittests: Remove implicit ilist iterator conversions, NFC 2015-10-20 18:30:20 +00:00
InstructionsTest.cpp
IRBuilderTest.cpp add fast-math-flags to 'call' instructions (PR21290) 2015-12-14 21:59:03 +00:00
LegacyPassManagerTest.cpp unittests: Remove implicit ilist iterator conversions, NFC 2015-10-20 18:30:20 +00:00
Makefile [PM/AA] Remove the last relics of the separate IPA library from LLVM, 2015-08-18 17:51:53 +00:00
MDBuilderTest.cpp
MetadataTest.cpp Macro debug info support in LLVM IR 2015-12-10 12:56:35 +00:00
PassManagerTest.cpp
PatternMatch.cpp
TypeBuilderTest.cpp
TypesTest.cpp Add unit test for isLayoutIdentical(empty, empty). 2015-08-18 07:59:09 +00:00
UserTest.cpp
UseTest.cpp
ValueHandleTest.cpp -Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated in C++11 2015-08-03 22:30:24 +00:00
ValueMapTest.cpp
ValueTest.cpp unittests: Remove implicit ilist iterator conversions, NFC 2015-10-20 18:30:20 +00:00
VerifierTest.cpp [Verifier] Improve error for cross-module refs 2015-12-01 19:06:36 +00:00
WaymarkTest.cpp