llvm-project/llvm/unittests/IR
Sanjay Patel fa54acedd1 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

llvm-svn: 255555
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 IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
DominatorTreeTest.cpp unittests: Remove implicit ilist iterator conversions, NFC 2015-10-20 18:30:20 +00:00
IRBuilderTest.cpp add fast-math-flags to 'call' instructions (PR21290) 2015-12-14 21:59:03 +00:00
InstructionsTest.cpp [opaque pointer type] gep API migration 2015-03-14 21:40:10 +00:00
LegacyPassManagerTest.cpp unittests: Remove implicit ilist iterator conversions, NFC 2015-10-20 18:30:20 +00:00
MDBuilderTest.cpp IR: Split Metadata from Value 2014-12-09 18:38:53 +00:00
Makefile [PM/AA] Remove the last relics of the separate IPA library from LLVM, 2015-08-18 17:51:53 +00:00
MetadataTest.cpp Macro debug info support in LLVM IR 2015-12-10 12:56:35 +00:00
PassManagerTest.cpp [PM] Add names and debug logging for analysis passes to the new pass 2015-01-05 12:21:44 +00:00
PatternMatch.cpp [C++11] Use 'nullptr'. 2014-06-08 22:29:17 +00:00
TypeBuilderTest.cpp [C++11] Use 'nullptr'. 2014-06-08 22:29:17 +00:00
TypesTest.cpp Add unit test for isLayoutIdentical(empty, empty). 2015-08-18 07:59:09 +00:00
UseTest.cpp Format: Modernize using variadic templates. 2015-02-15 22:15:41 +00:00
UserTest.cpp [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
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 [lit] Fix running gtest type-parameterized tests on Windows 2015-04-06 21:49:55 +00:00
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 Fix a leak found by asan. 2014-12-23 17:20:23 +00:00