llvm/test/tools
Hal Finkel 0837bf4c51 [llvm-opt-report] Distinguish inlined contexts when optimizations differ
How code is optimized sometimes, perhaps often, depends on the context into
which it was inlined. This change allows llvm-opt-report to track the
differences between the optimizations performed, or not, in different contexts,
and when these differ, display those differences.

For example, this code:

  $ cat /tmp/q.cpp
  void bar();
  void foo(int n) {
    for (int i = 0; i < n; ++i)
      bar();
  }

  void quack() {
    foo(4);
  }

  void quack2() {
    foo(4);
  }

will now produce this report:

  < /home/hfinkel/src/llvm/test/tools/llvm-opt-report/Inputs/q.cpp
   2         | void bar();
   3         | void foo(int n) {
   [[
    > foo(int):
   4         |   for (int i = 0; i < n; ++i)
    > quack(), quack2():
   4  U4     |   for (int i = 0; i < n; ++i)
   ]]
   5         |     bar();
   6         | }
   7         |
   8         | void quack() {
   9 I       |   foo(4);
  10         | }
  11         |
  12         | void quack2() {
  13 I       |   foo(4);
  14         | }
  15         |

Note that the tool has demangled the function names, and grouped the reports
associated with line 4. This shows that the loop on line 4 was unrolled by a
factor of 4 when inlined into the functions quack() and quack2(), but not in
the function foo(int) itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283402 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-05 22:25:33 +00:00
..
dsymutil
gold [gold] Split plugin options controlling ThinLTO and codegen parallelism. 2016-09-23 20:35:19 +00:00
llvm-ar
llvm-config
llvm-cov [llvm-cov] Filter away source files that aren't in the coverage mapping 2016-09-23 18:57:35 +00:00
llvm-cxxdump
llvm-dwp
llvm-lit
llvm-lto
llvm-lto2 [LTO] Add ability to parse AA pipelines. 2016-09-16 21:03:21 +00:00
llvm-mc
llvm-nm Add the first of what will be a long line of additional error checks for invalid Mach-O files. 2016-08-05 18:19:40 +00:00
llvm-objdump DebugInfo: New metadata representation for global variables. 2016-09-13 01:12:59 +00:00
llvm-opt-report [llvm-opt-report] Distinguish inlined contexts when optimizations differ 2016-10-05 22:25:33 +00:00
llvm-pdbdump
llvm-profdata [Profile] dump ic value profile value/site-count histogram 2016-09-20 21:04:22 +00:00
llvm-readobj COFF: Fix short import lib import name type bitshift 2016-10-01 23:10:20 +00:00
llvm-size llvm-size: Add --totals option 2016-09-12 17:08:28 +00:00
llvm-split
llvm-symbolizer
lto [LTO] Fix test to not depend on the exact address of symbols, just their linkage 2016-10-03 21:40:50 +00:00
sancov [sancov] introducing symbolized coverage files (.symcov) 2016-09-28 21:39:28 +00:00
sanstats
yaml2obj