Go to file
Jeremy Morse 176bbd5cde [DebugInfo] Make postra sinking of DBG_VALUEs subregister-safe
Currently the machine instruction sinker identifies DBG_VALUE insts that
also need to sink by comparing register numbers. Unfortunately this isn't
safe, because (after register allocation) a DBG_VALUE may read a register
that aliases what's being sunk. To fix this, identify the DBG_VALUEs that
need to sink by recording & examining their register units. Register units
gives us the following guarantee:

  "Two registers overlap if and only if they have a common register unit"
  [MCRegisterInfo.h]

Thus we can always identify aliasing DBG_VALUEs if the set of register
units read by the DBG_VALUE, and the register units of the instruction
being sunk, intersect. (MachineSink already uses classes like
"LiveRegUnits" for determining sinking validity anyway).

The test added checks for super and subregister DBG_VALUE reads of a sunk
copy being sunk as well.

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

llvm-svn: 369247
2019-08-19 09:53:07 +00:00
clang [Diagnostics] Diagnose misused xor as pow 2019-08-18 19:14:14 +00:00
clang-tools-extra [clangd] Added special HighlightingKind for function parameters. 2019-08-19 07:51:39 +00:00
compiler-rt [Fuchsia] Create the VMO during initialization, not during exit 2019-08-17 00:54:22 +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 Fix thread comparison by making sure we never pass our special 'not a thread' value to the underlying implementation. Fixes PR#42918. 2019-08-14 20:54:56 +00:00
libcxxabi [libcxxabi] __cxa_guard_require: test guard byte with != 0 instead of == 1 2019-08-16 13:54:44 +00:00
libunwind [runtimes] Don't depend on libpthread on Android 2019-07-22 20:41:03 +00:00
lld [ELF][ARM] Add a test that maxes out the thunk convergence limit 2019-08-19 09:46:52 +00:00
lldb [lldb][NFC] Remove StringList::AutoComplete 2019-08-19 08:15:46 +00:00
llgo IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
llvm [DebugInfo] Make postra sinking of DBG_VALUEs subregister-safe 2019-08-19 09:53:07 +00:00
openmp [OpenMP] Enable warning about "implicit fallthrough" 2019-08-15 13:26:55 +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 [Polly] Migrate llvm::make_unique to std::make_unique 2019-08-14 22:28:12 +00:00
pstl [pstl] Allow customizing whether per-TU insulation is provided 2019-08-13 12:49:00 +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.