llvm-project/clang/test/Misc
Hal Finkel c07e19b2c1 Add a loop's debug location to its llvm.loop metadata
Getting accurate locations for loops is important, because those locations are
used by the frontend to generate optimization remarks. Currently, optimization
remarks for loops often appear on the wrong line, often the first line of the
loop body instead of the loop itself. This is confusing because that line might
itself be another loop, or might be somewhere else completely if the body was
an inlined function call. This happens because of the way we find the loop's
starting location. First, we look for a preheader, and if we find one, and its
terminator has a debug location, then we use that. Otherwise, we look for a
location on an instruction in the loop header.

The fallback heuristic is not bad, but will almost always find the beginning of
the body, and not the loop statement itself. The preheader location search
often fails because there's often not a preheader, and even when there is a
preheader, depending on how it was formed, it sometimes carries the location of
some preceeding code.

I don't see any good theoretical way to fix this problem. On the other hand,
this seems like a straightforward solution: Put the debug location in the
loop's llvm.loop metadata. When emitting debug information, this commit causes
us to add the debug location as an operand to each loop's llvm.loop metadata.
Thus, we now generate this metadata for all loops (not just loops with
optimization hints) when we're otherwise generating debug information.

The remark test case changes depend on the companion LLVM commit r270771.

llvm-svn: 270772
2016-05-25 21:53:24 +00:00
..
Inputs
ast-dump-arm-attr.c Prune CRLF. 2014-10-27 12:37:26 +00:00
ast-dump-attr.cpp Do not crash when dumping the objc_bridge_related attribute when its optional arguments are not supplied. 2015-11-30 15:25:34 +00:00
ast-dump-color.cpp Speculative fix for this test case (the test doesn't run on my typical build environment). 2016-03-09 17:34:16 +00:00
ast-dump-comment.cpp
ast-dump-decl.c
ast-dump-decl.cpp Record correct source range for defaulted/deleted members. 2015-03-23 21:43:28 +00:00
ast-dump-decl.m
ast-dump-decl.mm
ast-dump-invalid.cpp Keep the IfStmt node even if the condition is invalid 2015-10-11 17:27:29 +00:00
ast-dump-lookups.cpp Improve AST dumping: 2016-01-12 21:59:26 +00:00
ast-dump-msp430-attr.c Prune CRLF. 2014-10-27 12:37:26 +00:00
ast-dump-pipe.cl [OpenCL] Fix pipe type dump. 2016-05-03 05:37:07 +00:00
ast-dump-stmt.c
ast-dump-stmt.cpp Fix -ast-dump of dependent new and delete exprs 2015-03-19 18:47:47 +00:00
ast-dump-stmt.m
ast-dump-templates.cpp When pretty-printing a declaration of a pack, put the ellipsis before the name 2014-07-23 03:17:06 +00:00
ast-dump-wchar.cpp
ast-print-char-literal.cpp Fix the ASTPrinter output for ascii char literals >127. 2016-02-13 02:31:28 +00:00
ast-print-objectivec.m Patch to wrap up '_' as separator in version numbers 2014-10-06 16:46:02 +00:00
ast-print-pragmas-xfail.cpp Adds a Pragma spelling for attributes to tablegen and makes use of it for loop 2014-06-13 17:57:25 +00:00
ast-print-pragmas.cpp [ATTR] Automatic line feed after pragma-like attribute. 2015-10-12 06:59:48 +00:00
attr-source-range.cpp Prune CRLF. 2014-10-27 12:37:26 +00:00
backend-optimization-failure-nodbg.cpp Add backend dignostic printer for unsupported features 2016-02-02 13:52:52 +00:00
backend-optimization-failure.cpp Add a loop's debug location to its llvm.loop metadata 2016-05-25 21:53:24 +00:00
backend-stack-frame-diagnostics-fallback.cpp Implement -Wframe-larger-than backend diagnostic 2014-06-05 22:10:59 +00:00
backend-stack-frame-diagnostics.cpp Prevent link warnings due to -Wframe-larger-than= 2014-07-10 02:13:29 +00:00
caret-diags-macros.c [diagnostics] Avoid crashes while printing macro backtraces 2015-12-08 01:08:09 +00:00
caret-diags-scratch-buffer.c
cc1as-asm.s Revert "[Driver] Quote clang full version in dwarf producer when invoking cc1as" 2016-05-02 20:20:49 +00:00
dev-fd-fs.c
diag-aka-types.cpp PR10405 - Desugar FunctionType and TemplateSpecializationType if any type that appears inside needs to be desugared. 2015-07-16 01:06:17 +00:00
diag-format.c Get default -fms-compatibility-version from cl.exe's version 2016-05-13 23:20:11 +00:00
diag-line-wrapping.cpp
diag-macro-backtrace.c
diag-macro-backtrace2.c Improve the printing of ranges when macros are involved. 2015-09-24 01:21:01 +00:00
diag-mapping.c
diag-mapping2.c Improve specificity in the diag-mapping2.c test 2014-06-10 06:08:41 +00:00
diag-null-bytes-in-line.cpp Don't crash w/ a diagnostic range containing a null byte 2016-02-17 22:37:45 +00:00
diag-presumed.c Stop printing macro backtraces that don't help diagnostics. 2015-08-12 18:24:59 +00:00
diag-special-chars.c Attempt to fix test from r225423 to get build bots green. 2015-01-08 02:40:08 +00:00
diag-template-diffing-color.cpp Template Type Diffing change 2016-02-02 00:36:59 +00:00
diag-template-diffing-cxx98.cpp Template Type Diffing change 2016-02-02 00:36:59 +00:00
diag-template-diffing.cpp Fix Clang crash with template type diffing. 2016-03-30 22:23:00 +00:00
diag-trailing-null-bytes.cpp
diag-verify.cpp
diagnostic-crash.cpp
driver-verify.c
emit-html-insert.c Revert "clang/test/Driver/crash-report.c: This requires rewriter for -frewrite-includes. [PR20321]" 2014-07-16 15:12:48 +00:00
emit-html.c Revert "clang/test/Driver/crash-report.c: This requires rewriter for -frewrite-includes. [PR20321]" 2014-07-16 15:12:48 +00:00
error-limit-multiple-notes.cpp
error-limit.c
freebsd-arm-size_t.c
include-stack-for-note-flag.cpp
integer-literal-printing.cpp
interpreter.c Reenable Misc/interpreter.c as r239388 correctly handles such targets 2015-06-09 06:33:13 +00:00
languageOptsOpenCL.cl [OpenCL] Add supported OpenCL extensions to target info. 2016-05-16 17:06:34 +00:00
macro-backtrace.c
message-length.c
permissions.cpp Erase REQUIRES: shell-preserves-root from remaining tests, see r242312.þ 2015-07-15 20:04:18 +00:00
predefines.c
reduced-diags-macros-backtrace.cpp Stop printing macro backtraces that don't help diagnostics. 2015-08-12 18:24:59 +00:00
reduced-diags-macros.cpp Improve the printing of ranges when macros are involved. 2015-09-24 01:21:01 +00:00
remap-file.c
serialized-diags-driver.c [MSVC Compat] Only warn for unknown clang-cl arguments 2016-01-25 21:14:52 +00:00
serialized-diags-frontend.c
serialized-diags-no-category.c
serialized-diags-no-issue.c
serialized-diags-really-long-text.cpp [Frontend] Fix crash when serializing diagnostics with really long text. 2015-08-06 18:46:36 +00:00
serialized-diags-single-issue.c
serialized-diags-stable.c
serialized-diags.c Improve the printing of ranges when macros are involved. 2015-09-24 01:21:01 +00:00
serialized-diags.h
serialized-diags.m Correctly handle reading locations from serialized diagnostics 2014-10-10 22:20:26 +00:00
show-diag-options.c
tabstop.c
target-parser.c Misc: add a test for TargetParser usage 2016-03-05 21:12:33 +00:00
thinlto.c Make thinlto clang test more robust against LLVM changes. 2016-04-24 03:44:55 +00:00
unnecessary-elipses.cpp
unprintable.c
verify.c
warn-in-system-header.c
warn-in-system-header.h
warn-sysheader.cpp
warning-flags-enabled.c Use %select to merge similar diagnostics. NFC 2015-11-14 02:09:55 +00:00
warning-flags-tree.c
warning-flags.c Use %select to merge similar diagnostics. NFC 2015-11-14 02:09:55 +00:00
win32-macho.c Remove dev/null redirect and x86 backend requirement from new test. 2014-06-11 20:19:07 +00:00
working-directory.c
wrong-encoding.c
wrong-encoding2.c