This fixes a regression likely introduced in d2cb4361 . The problem is that by using the default std::unordered_map comparison predicate std::equal_to, we get incorrect behavior when the key is float or double: 1. 0.0 and -0.0 appear equal, so they share a constant pool entry even though the bit patterns are different. This is a correctness bug. 2. Each instance of NaN gets a separate constant pool entry, because NaN != NaN by C equality rules. This is a performance bug. (This problem doesn't show up with the native bitcode reader, because constants are already unique-ified in the PNaCl bitcode file.) The solution is to use memcmp for floating-point key types. Also, the abi-atomics.ll test is disabled for the MINIMAL build, to fix an oversight from a previous CL. BUG= none R=jfb@chromium.org Review URL: https://codereview.chromium.org/1019233002
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| 64bit.pnacl.ll | Loading commit data... | |
| 8bit.pnacl.ll | Loading commit data... | |
| abi-atomics.ll | Loading commit data... | |
| addr-opt-multi-def-var.ll | Loading commit data... | |
| address-mode-opt.ll | Loading commit data... | |
| align-spill-locations.ll | Loading commit data... | |
| alloc.ll | Loading commit data... | |
| arith-opt.ll | Loading commit data... | |
| bitcast.ll | Loading commit data... | |
| bool-opt.ll | Loading commit data... | |
| branch-opt.ll | Loading commit data... | |
| branch-simple.ll | Loading commit data... | |
| callindirect.pnacl.ll | Loading commit data... | |
| cmp-opt.ll | Loading commit data... | |
| convert.ll | Loading commit data... | |
| div_legalization.ll | Loading commit data... | |
| ebp_args.ll | Loading commit data... | |
| elf_container.ll | Loading commit data... | |
| elf_function_sections.ll | Loading commit data... | |
| elf_nodata.ll | Loading commit data... | |
| fp.pnacl.ll | Loading commit data... | |
| fp_const_pool.ll | Loading commit data... | |
| fpcall.ll | Loading commit data... | |
| fpconst.pnacl.ll | Loading commit data... | |
| function_aligned.ll | Loading commit data... | |
| globalinit.pnacl.ll | Loading commit data... | |
| globalrelocs.ll | Loading commit data... | |
| ias-multi-reloc.ll | Loading commit data... | |
| load.ll | Loading commit data... | |
| mangle.ll | Loading commit data... | |
| nacl-atomic-cmpxchg-optimization.ll | Loading commit data... | |
| nacl-atomic-errors.ll | Loading commit data... | |
| nacl-atomic-fence-all.ll | Loading commit data... | |
| nacl-atomic-intrinsics.ll | Loading commit data... | |
| nacl-other-intrinsics.ll | Loading commit data... | |
| nop-insertion.ll | Loading commit data... | |
| phi.ll | Loading commit data... | |
| randomize-regalloc.ll | Loading commit data... | |
| regalloc_evict_non_overlap.ll | Loading commit data... | |
| returns_twice_no_coalesce.ll | Loading commit data... | |
| sdiv.ll | Loading commit data... | |
| select-opt.ll | Loading commit data... | |
| shift.ll | Loading commit data... | |
| simple-loop.ll | Loading commit data... | |
| store.ll | Loading commit data... | |
| struct-arith.pnacl.ll | Loading commit data... | |
| switch-opt.ll | Loading commit data... | |
| test_i1.ll | Loading commit data... | |
| undef.ll | Loading commit data... | |
| unreachable.ll | Loading commit data... | |
| vector-arg.ll | Loading commit data... | |
| vector-arith.ll | Loading commit data... | |
| vector-bitcast.ll | Loading commit data... | |
| vector-cast.ll | Loading commit data... | |
| vector-fcmp.ll | Loading commit data... | |
| vector-icmp.ll | Loading commit data... | |
| vector-ops.ll | Loading commit data... | |
| vector-select.ll | Loading commit data... |