llvm-project/llvm
Florian Hahn e297006d6f [ScheduleDAG] Move DBG_VALUEs after first term forward.
MBBs are not allowed to have non-terminator instructions after the first
terminator. Currently in some cases (see the modified test),
EmitSchedule can add DBG_VALUEs after the last terminator, for example
when referring a debug value that gets folded into a TCRETURN
instruction on ARM.

This patch updates EmitSchedule to move inserted DBG_VALUEs just before
the first terminator. I am not sure if there are terminators produce
values that can in turn be used by a DBG_VALUE. In that case, moving the
DBG_VALUE might result in referencing an undefined register. But in any
case, it seems like currently there is no way to insert a proper DBG_VALUEs
for such registers anyways.

Alternatively it might make sense to just remove those extra DBG_VALUES.

I am not too familiar with the details of debug info in the backend and
would appreciate any suggestions on how to address the issue in the best
possible way.

Reviewers: vsk, aprantl, jpaquette, efriedma, paquette

Reviewed By: aprantl

Differential Revision: https://reviews.llvm.org/D83561
2020-07-17 10:27:43 +01:00
..
benchmarks
bindings
cmake Revert "[CMake] Simplify CMake handling for zlib" 2020-07-14 19:56:10 -07:00
docs [LangRef] Mention that freeze does not consider aggregate's paddings 2020-07-17 11:53:26 +09:00
examples [ORC] Add TargetProcessControl and TPCIndirectionUtils APIs. 2020-07-16 15:09:13 -07:00
include [ScheduleDAG] Move DBG_VALUEs after first term forward. 2020-07-17 10:27:43 +01:00
lib [ScheduleDAG] Move DBG_VALUEs after first term forward. 2020-07-17 10:27:43 +01:00
projects
resources
runtimes [CMake][runtimes] Pass the CMAKE_ARGS to runtimes build correctly 2020-07-15 09:25:18 -07:00
test [ScheduleDAG] Move DBG_VALUEs after first term forward. 2020-07-17 10:27:43 +01:00
tools [llvm-exegesis] Add benchmark latency option on X86 that uses LBR for more precise measurements. 2020-07-16 12:12:46 -04:00
unittests [llvm] Moved InlineSizeEstimatorAnalysis test to .ll 2020-07-16 12:25:16 -07:00
utils [gn build] Port 9870f77441 2020-07-16 23:07:46 +00:00
.clang-format
.clang-tidy
.gitattributes
.gitignore [clangd] Store index in '.cache/clangd/index' instead of '.clangd/index' 2020-07-07 14:53:45 +02:00
CMakeLists.txt [CMake] Enforce the minimum CMake version to be at least 3.13.4 2020-07-16 10:49:11 -04:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

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.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.