Go to file
Jinsong Ji 6349ce5ca5 [MachinePipeliner] Avoid indeterminate order in FuncUnitSorter
Summary:
This is exposed by adding a new testcase in PowerPC in
https://reviews.llvm.org/rL367732

The testcase got different output on different platform, hence breaking
buildbots.

The problem is that we get differnt FuncUnitOrder when calculateResMII.

The root cause is:
1. Two MachineInstr might get SAME priority(MFUsx) from minFuncUnits.
2. Current comparison operator() will return `MFUs1 > MFUs2`.
3. We use iterators for MachineInstr, so the input to FuncUnitSorter
   might be different on differnt platform due to the iterator nature.

So for two MI with same MFU, their order is actually depends on the
iterator order, which is platform (implemtation) dependent.

This is risky, and may cause cross-compiling problems.

The fix is to check make sure we assign a determine order when they are
equal.

Reviewers: bcahoon, hfinkel, jmolloy

Subscribers: nemanjai, hiraditya, MaskRay, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D65992

llvm-svn: 368441
2019-08-09 14:10:57 +00:00
clang Add SVE opaque built-in types 2019-08-09 08:52:54 +00:00
clang-tools-extra [clangd] Added highlighting for constructor initializers. 2019-08-09 12:19:10 +00:00
compiler-rt [sanitizer] Update symbolizer/scripts/global_symbols.txt 2019-08-09 14:03:30 +00:00
debuginfo-tests Make nrvo-string test more robust. 2019-06-27 20:38:37 +00:00
libclc Revert "Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC" 2019-08-05 17:23:23 +00:00
libcxx [libc++] Fix environment variable passing in libc++'s `SSHExecutor` `lit` utility 2019-08-08 17:33:35 +00:00
libcxxabi [libc++abi] Fix tests when pstl is enabled 2019-08-08 12:43:20 +00:00
libunwind [runtimes] Don't depend on libpthread on Android 2019-07-22 20:41:03 +00:00
lld [ELF] For VS-style diagnostics, prefer printing full paths in the header. 2019-08-09 08:29:03 +00:00
lldb [lldb][NFC] Unify InstrList typedef in IRForTarget 2019-08-09 10:01:51 +00:00
llgo IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
llvm [MachinePipeliner] Avoid indeterminate order in FuncUnitSorter 2019-08-09 14:10:57 +00:00
openmp [OpenMP][libomptarget] Add support for unified memory for regular maps 2019-08-07 17:29:45 +00:00
parallel-libs Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
polly [NFC][ScopBuilder] Move buildDomains and its callees to ScopBuilder. 2019-08-06 21:51:18 +00:00
pstl [NFC][pstl] Run clang-format 2019-08-08 17:10:45 +00:00
.arcconfig Update monorepo .arcconfig with new project callsign. 2019-01-31 14:34:59 +00:00
.clang-format Add .clang-tidy and .clang-format files to the toplevel of the 2019-01-29 16:43:16 +00:00
.clang-tidy Disable tidy checks with too many hits 2019-02-01 11:20:13 +00:00
.gitignore Change /build to /build* in top-level .gitignore. 2019-08-02 02:14:08 +00:00
README.md

README.md

The LLVM Compiler Infrastructure

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.