1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 12:02:58 +02:00
llvm-mirror/lib
JF Bastien 940c24167e Remove Merge Functions pointer comparisons
Summary:
This patch removes two remaining places where pointer value comparisons
are used to order functions: comparing range annotation metadata, and comparing
block address constants. (These are both rare cases, and so no actual
non-determinism was observed from either case).

The fix for range metadata is simple: the annotation always consists of a pair
of integers, so we just order by those integers.

The fix for block addresses is more subtle. Two constants are the same if they
are the same basic block in the same function, or if they refer to corresponding
basic blocks in each respective function. Note that in the first case, merging
is trivially correct. In the second, the correctness of merging relies on the
fact that the the values of block addresses cannot be compared. This change is
actually an enhancement, as these functions could not previously be merged (see
merge-block-address.ll).

There is still a problem with cross function block addresses, in that constants
pointing to a basic block in a merged function is not updated.

This also more robustly compares floating point constants by all fields of their
semantics, and fixes a dyn_cast/cast mixup.

Author: jrkoenig
Reviewers: dschuff, nlewycky, jfb
Subscribers llvm-commits
Differential revision: http://reviews.llvm.org/D12376

llvm-svn: 246305
2015-08-28 16:49:09 +00:00
..
Analysis [CodeGen] isInTailCallPosition didn't consider readnone tailcalls 2015-08-28 16:44:09 +00:00
AsmParser [WinEH] Require token linkage in EH pad/ret signatures 2015-08-23 00:26:33 +00:00
Bitcode [IR] Cleanup EH instructions a little bit 2015-08-23 19:22:31 +00:00
CodeGen [CodeGen] isInTailCallPosition didn't consider readnone tailcalls 2015-08-28 16:44:09 +00:00
DebugInfo [dwarfdump] Do not apply relocations in mach-o files if there is no LoadedObjectInfo. 2015-08-23 04:44:21 +00:00
ExecutionEngine [RuntimeDyld] Make sure code-sections aren't under-aligned. 2015-08-14 06:26:42 +00:00
Fuzzer [libFuzzer] fix minor inefficiency, PR24584 2015-08-26 21:55:19 +00:00
IR Revert r246244 and r246243 2015-08-28 06:52:00 +00:00
IRReader Return a unique_ptr from getLazyBitcodeModule and parseBitcodeFile. NFC. 2015-06-16 22:27:55 +00:00
LibDriver There is only one saver of strings. 2015-08-13 01:07:02 +00:00
LineEditor
Linker Linker: Remove empty destructor. 2015-08-21 04:51:24 +00:00
LTO CodeGen: Introduce splitCodeGen and teach LTOCodeGenerator to use it. 2015-08-27 23:37:36 +00:00
MC [MC] Split the layout part of MCAssembler::finish() into its own method. NFC. 2015-08-26 05:09:49 +00:00
Object Re-apply r246276 - Object: Teach llvm-ar to create symbol table for COFF short import files 2015-08-28 07:40:30 +00:00
Option Add an ArgList::AddAllArgs that accepts a vector of OptSpecifier. 2015-07-29 17:34:41 +00:00
Passes [PM/AA] Remove the last relics of the separate IPA library from LLVM, 2015-08-18 17:51:53 +00:00
ProfileData Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Support Expose more properties of llvm::fltSemantics 2015-08-26 02:32:45 +00:00
TableGen TableGen: Support folding casts from bits to int 2015-07-31 01:12:06 +00:00
Target [x86] enable machine combiner reassociations for scalar 'and' insts 2015-08-28 14:09:48 +00:00
Transforms Remove Merge Functions pointer comparisons 2015-08-28 16:49:09 +00:00
CMakeLists.txt LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00
LLVMBuild.txt Wrap some long lines in LLVMBuild files. NFC 2015-06-12 18:44:57 +00:00
Makefile LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00