llvm/lib
Pete Cooper 18a6f17098 Don't allocate in APInt::slt. NFC.
APInt::slt was copying the LHS and RHS in to temporaries then making
them unsigned so that it could use an unsigned comparision.  It did
this even on the paths which were trivial to give results for, such
as the sign bit of the LHS being set while RHS was not set.

This changes the logic to return out immediately in the trivial cases,
and use an unsigned comparison in the remaining cases.  But this time,
just use the unsigned comparison directly without creating any temporaries.

This works because, for example:
  true = (-2 slt -1) = (0xFE ult 0xFF)

Also added some tests explicitly for slt with APInt's larger than 64-bits
so that this new code is tested.

Using the memory for 'opt -O2 verify-uselistorder.lto.opt.bc -o opt.bc'
(see r236629 for details), this reduces the number of allocations from
26.8M to 23.9M.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270881 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-26 17:40:07 +00:00
..
Analysis [CaptureTracking] Volatile operations capture their memory location 2016-05-26 17:36:22 +00:00
AsmParser Objective-C Class Properties: Autoupgrade "Class Properties" module flag. 2016-05-25 23:14:48 +00:00
Bitcode Objective-C Class Properties: Autoupgrade "Class Properties" module flag. 2016-05-25 23:14:48 +00:00
CodeGen Undo a suboptimal clang-format decision. NFC 2016-05-26 16:06:04 +00:00
DebugInfo [codeview] Move StreamInterface and StreamReader to libcodeview. 2016-05-25 20:37:03 +00:00
ExecutionEngine [Orc] Merge some common code for creating CompileCallbackManagers and 2016-05-26 17:20:35 +00:00
Fuzzer [libfuzzer] replacing unittest for truncate_units with functional test. 2016-05-25 21:00:17 +00:00
IR [ConstantFold] NFC cleanup after previous change. 2016-05-26 07:08:09 +00:00
IRReader Remove autoconf support 2016-01-26 21:29:08 +00:00
LibDriver LibDriver: Silently do nothing when provided no inputs. 2016-04-13 19:36:04 +00:00
LineEditor Fix Clang-tidy modernize-deprecated-headers warnings in some files; other minor fixes. 2016-03-28 17:40:08 +00:00
Linker ValueMaterializer: rename materializeDeclFor() to materialize() 2016-05-25 21:03:21 +00:00
LTO [ThinLTO] Resolve LinkOnceAny 2016-05-26 14:16:52 +00:00
MC PR11740: Disable assembly debug info when assembly already contains line directives 2016-05-26 00:22:26 +00:00
Object [CMake] Restrict libxar linkage to just llvm-objdump 2016-05-26 16:32:40 +00:00
ObjectYAML [obj2yaml] [yaml2obj] MachO support for rebase opcodes 2016-05-25 17:09:07 +00:00
Option Option parser: class for consuming a joined arg in addition to all remaining args 2016-04-15 00:23:30 +00:00
Passes [PM] Port PartiallyInlineLibCalls to the new pass manager. 2016-05-25 23:38:53 +00:00
ProfileData Add FIXMEs to all derived classes of std::error_category. 2016-05-24 20:13:46 +00:00
Support Don't allocate in APInt::slt. NFC. 2016-05-26 17:40:07 +00:00
TableGen [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
Target Init member structs in constructor. 2016-05-26 17:29:20 +00:00
Transforms Revert 270865 -- unexplained bot failure on linux/ppcle 2016-05-26 17:27:22 +00:00
CMakeLists.txt Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
LLVMBuild.txt Add LLVMBuild for ObjectYAML. 2016-03-01 21:29:33 +00:00