
<html>
<head>
<title>
Demo page information
</title>
</head>

<body>

<h1>Demo page information</h1>

<p>Press "back" or <a href=".">click here</a> to return to the demo
page.</p>

<h2><a name="hints">Hints and Advice</a></h2>

<ul>
<li>The generated LLVM code will be easier to read if
you use stdio (e.g., printf) than iostreams (e.g., std::cout).</li>

<li>Unused inline functions and methods are not generated.  Instead
of '<tt>class foo { void bar() {}};</tt>',
try writing '<tt>class foo { void bar(); }; void foo::bar() {}</tt>'.</li>

<li>If you want to try out a file that uses non-standard header files,  you should
  preprocess it (e.g., with the <tt>-save-temps</tt> or <tt>-E</tt> options to
  <tt>gcc</tt>) then upload the result.</li>

</ul>


<h2><a name="demangle">Demangle C++ names with C++ filt</a></h2>

<p>
Select this option if you want to run the output LLVM IR through "c++filt",
which converts 'mangled' C++ names to their unmangled version.
Note that LLVM code produced will not be lexically valid, but it will
be easier to understand.
</p>

<h2><a name="lto">Run link-time optimizer</a></h2>

<p>
Select this option to run the LLVM link-time optimizer, which is designed to
optimize across files in your application.  Since the demo page doesn't allow
you to upload multiple files at once, and does not link in any libraries, we
configured the demo page optimizer to assume there are no calls
coming in from outside the source file, allowing it to optimize more
aggressively.</p>

<p>Note that you have to define 'main' in your program for this
to make much of a difference.
</p>

<h2><a name="stats">Show detailed pass statistics</a></h2>

<p>
Select this option to enable compilation timings and statistics from various
optimizers.</p>


<h2><a name="bcanalyzer">Analyze generated bytecode</a></h2>

<p>
Select this option to run the <a
href="https://llvm.org/docs/CommandGuide/llvm-bcanalyzer.html">llvm-bcanalyzer</a> tool
on the generated bytecode, which introspects into the format of the .bc file
itself.  </p>


<h2><a name="llvm2cpp">Show C++ API code</a></h2>

<p>
Select this option to run the <a
href="https://llvm.org/cmds/llvm2cpp.html">llvm2cpp</a> tool
on the generated bytecode, which auto generates the C++ API calls that could
be used to create the .bc file.
</p>

</body>
</html>
