Compare commits

...

12 Commits

Author SHA1 Message Date
John Criswell
1c962223f4 Add PR#566; something I should have done before.
llvm-svn: 22118
2005-05-18 15:37:06 +00:00
John Criswell
c1dd9b667a Updated for LLVM 1.5.
llvm-svn: 22117
2005-05-18 14:41:07 +00:00
John Criswell
8e6ae64167 Fix name of LLVM CFE source tarball.
llvm-svn: 22110
2005-05-17 21:14:58 +00:00
John Criswell
762895b3f9 Fixed the descriptions of llvmc and llvm-ld to not be version specific.
Fixed some typos.

llvm-svn: 22108
2005-05-17 16:57:10 +00:00
John Criswell
6d9c9a176a Added Linux/Itanium back. Linux/PPC is the platform that we haven't used
yet.

llvm-svn: 22107
2005-05-17 16:19:48 +00:00
John Criswell
687343547a Merged from Mainline.
llvm-svn: 22106
2005-05-17 16:09:30 +00:00
John Criswell
4447fc67ef Merged Misha Modifications from Mainline.
llvm-svn: 22105
2005-05-17 16:08:29 +00:00
John Criswell
4d9d10c757 Updated from mainline.
llvm-svn: 22104
2005-05-17 16:07:32 +00:00
John Criswell
21c9bf15f5 Merged from mainline.
llvm-svn: 22103
2005-05-17 16:07:08 +00:00
John Criswell
033f60f6d4 Removed Linux/Itanium as we don't really know if it works.
Made other minor corrections.

llvm-svn: 22102
2005-05-17 16:05:22 +00:00
John Criswell
25b91e4ae0 Updated the version to 1.5.
llvm-svn: 22095
2005-05-16 19:30:22 +00:00
CVS to SVN Conversion
f2fed73d14 This commit was manufactured by cvs2svn to create branch 'release_15'.
llvm-svn: 22089
2005-05-16 17:13:10 +00:00
9 changed files with 98 additions and 51 deletions

View File

@@ -31,7 +31,7 @@ dnl===
dnl===-----------------------------------------------------------------------=== dnl===-----------------------------------------------------------------------===
dnl Initialize autoconf and define the package name, version number and dnl Initialize autoconf and define the package name, version number and
dnl email address for reporting bugs. dnl email address for reporting bugs.
AC_INIT([[llvm]],[[1.5cvs]],[llvmbugs@cs.uiuc.edu]) AC_INIT([[llvm]],[[1.5]],[llvmbugs@cs.uiuc.edu])
dnl Provide a copyright substitution and ensure the copyright notice is included dnl Provide a copyright substitution and ensure the copyright notice is included
dnl in the output of --version option of the generated configure script. dnl in the output of --version option of the generated configure script.

18
llvm/configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59 for llvm 1.5cvs. # Generated by GNU Autoconf 2.59 for llvm 1.5.
# #
# Report bugs to <llvmbugs@cs.uiuc.edu>. # Report bugs to <llvmbugs@cs.uiuc.edu>.
# #
@@ -425,8 +425,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package. # Identity of this package.
PACKAGE_NAME='llvm' PACKAGE_NAME='llvm'
PACKAGE_TARNAME='-llvm-' PACKAGE_TARNAME='-llvm-'
PACKAGE_VERSION='1.5cvs' PACKAGE_VERSION='1.5'
PACKAGE_STRING='llvm 1.5cvs' PACKAGE_STRING='llvm 1.5'
PACKAGE_BUGREPORT='llvmbugs@cs.uiuc.edu' PACKAGE_BUGREPORT='llvmbugs@cs.uiuc.edu'
ac_unique_file="lib/VMCore/Module.cpp" ac_unique_file="lib/VMCore/Module.cpp"
@@ -964,7 +964,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures llvm 1.5cvs to adapt to many kinds of systems. \`configure' configures llvm 1.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1026,7 +1026,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of llvm 1.5cvs:";; short | recursive ) echo "Configuration of llvm 1.5:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@@ -1172,7 +1172,7 @@ fi
test -n "$ac_init_help" && exit 0 test -n "$ac_init_help" && exit 0
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
llvm configure 1.5cvs llvm configure 1.5
generated by GNU Autoconf 2.59 generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc. Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1188,7 +1188,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by llvm $as_me 1.5cvs, which was It was created by llvm $as_me 1.5, which was
generated by GNU Autoconf 2.59. Invocation command line was generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@ $ $0 $@
@@ -30698,7 +30698,7 @@ _ASBOX
} >&5 } >&5
cat >&5 <<_CSEOF cat >&5 <<_CSEOF
This file was extended by llvm $as_me 1.5cvs, which was This file was extended by llvm $as_me 1.5, which was
generated by GNU Autoconf 2.59. Invocation command line was generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@@ -30761,7 +30761,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\ ac_cs_version="\\
llvm config.status 1.5cvs llvm config.status 1.5
configured by $0, generated by GNU Autoconf 2.59, configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"

View File

@@ -129,7 +129,7 @@ of permissions. Specify a path into which LLVM can be installed (e.g.
</pre></li> </pre></li>
<li><p>Unpack the C/C++ front-end source into cfrontend/src, either by <li><p>Unpack the C/C++ front-end source into cfrontend/src, either by
untar'ing an llvm-gcc.tar.gz file or checking out CVS into this untar'ing a cfrontend.source.tar.gz file or checking out CVS into this
directory.</p></li> directory.</p></li>
<li><p>Make "build" and "install" directories as siblings of the "src" tree:</p> <li><p>Make "build" and "install" directories as siblings of the "src" tree:</p>

View File

@@ -30,7 +30,7 @@ html/%.html: %.pod
--podpath=. --noindex --infile=$< --outfile=$@ --title=$* --podpath=. --noindex --infile=$< --outfile=$@ --title=$*
man/man1/%.1: %.pod man/man1/%.1: %.pod
pod2man --release=1.4 --center="LLVM Command Guide" $< $@ pod2man --release=1.5 --center="LLVM Command Guide" $< $@
ps/%.ps: man/man1/%.1 ps/%.ps: man/man1/%.1
groff -Tps -man $< > $@ groff -Tps -man $< > $@

View File

@@ -143,9 +143,6 @@ branch stubs for powerpc64-linux (from binutils)</a></li>
<!-- ======================================================================= --> <!-- ======================================================================= -->
<div class="doc_subsection"><a name="sparc">SPARC</a></div> <div class="doc_subsection"><a name="sparc">SPARC</a></div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">Official manuals and docs</div>
<div class="doc_text"> <div class="doc_text">
<ul> <ul>

View File

@@ -307,9 +307,9 @@ if necessary.</li>
</div> </div>
<p>Note that you will need about 1-3 GB of space for a full LLVM build in Debug <p>Note that you will need about 1-3 GB of space for a full LLVM build in Debug
mode, depending on the system (because of all the debug info), and the libraries mode, depending on the system (it is so large because of all the debugging
appear in more than one of the tools that get linked, so there is some information and the fact that the libraries are statically linked into multiple
duplication. If you do not need many of the tools and you are space-conscious, tools). If you do not need many of the tools and you are space-conscious,
you can disable them individually in <tt>llvm/tools/Makefile</tt>. The Release you can disable them individually in <tt>llvm/tools/Makefile</tt>. The Release
build requires considerably less space.</p> build requires considerably less space.</p>
@@ -576,9 +576,10 @@ variables.
<dl> <dl>
<dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt>/path/to/your/bytecode/libs</tt></dt> <dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt>/path/to/your/bytecode/libs</tt></dt>
<dd>[Optional] This environment variable helps LLVM linking tools find the <dd>[Optional] This environment variable helps LLVM linking tools find the
locations of your bytecode libraries. It is provided only a locations of your bytecode libraries. It is provided only as a
convenience since you can specify the paths using the -L options of the convenience since you can specify the paths using the -L options of the
tools and the C/C++ front-end will use the bytecode files installed in its tools and the C/C++ front-end will automatically use the bytecode files
installed in its
<tt>lib</tt> directory.</dd> <tt>lib</tt> directory.</dd>
</dl> </dl>
@@ -620,7 +621,7 @@ compressed with the gzip program.
<dt><tt>cfrontend-x.y.i386-unknown-freebsd5.1.tar.gz</tt></dt> <dt><tt>cfrontend-x.y.i386-unknown-freebsd5.1.tar.gz</tt></dt>
<dd>Binary release of the GCC front end for FreeBSD/x86.<br/></dd> <dd>Binary release of the GCC front end for FreeBSD/x86.<br/></dd>
<dt><tt>cfrontend-x.y.powerpc-apple-darwin7.6.0.tar.gz</tt></dt> <dt><tt>cfrontend-x.y.powerpc-apple-darwin7.8.0.tar.gz</tt></dt>
<dd>Binary release of the GCC front end for MacOS X/PPC.<br/></dd> <dd>Binary release of the GCC front end for MacOS X/PPC.<br/></dd>
</dl> </dl>
@@ -788,11 +789,12 @@ script to configure the build system:</p>
<a href="CFEBuildInstrs.html">Bootstrapping the LLVM C/C++ Front-End</a> <a href="CFEBuildInstrs.html">Bootstrapping the LLVM C/C++ Front-End</a>
for details on building the C/C++ Front End.</dd> for details on building the C/C++ Front End.</dd>
<dt><i>--with-tclinclude</i></dt> <dt><i>--with-tclinclude</i></dt>
<dd>Path to the tcl include directory under which the <tt>tclsh</tt> can be <dd>Path to the tcl include directory under which <tt>tclsh</tt> can be
found. Use this if you have multiple tcl installations on your machine and you found. Use this if you have multiple tcl installations on your machine and you
want to use a specific one (8.x) for LLVM. LLVM only uses tcl for running the want to use a specific one (8.x) for LLVM. LLVM only uses tcl for running the
dejagnu based test suite in <tt>llvm/test</tt>. If you don't specify this dejagnu based test suite in <tt>llvm/test</tt>. If you don't specify this
option, the LLVM configure script will search for tcl 8.4 and 8.3 releases. option, the LLVM configure script will search for the tcl 8.4 and 8.3
releases.
<p></p> <p></p>
</dd> </dd>
<dt><i>--enable-optimized</i></dt> <dt><i>--enable-optimized</i></dt>
@@ -817,7 +819,7 @@ script to configure the build system:</p>
native compiler (no cross-compiler targets available). The "native" target is native compiler (no cross-compiler targets available). The "native" target is
selected as the target of the build host. You can also specify a comma selected as the target of the build host. You can also specify a comma
separated list of target names that you want available in llc. The target separated list of target names that you want available in llc. The target
names use all lower case. The current set is of targets is: <br/> names use all lower case. The current set of targets is: <br/>
<tt>alpha, ia64, powerpc, skeleton, sparc, x86</tt>. <tt>alpha, ia64, powerpc, skeleton, sparc, x86</tt>.
<p></p></dd> <p></p></dd>
<dt><i>--enable-doxygen</i></dt> <dt><i>--enable-doxygen</i></dt>
@@ -1148,7 +1150,7 @@ different <a href="#tools">tools</a>.</p>
<dd> This directory contains files that describe various target architectures <dd> This directory contains files that describe various target architectures
for code generation. For example, the <tt>llvm/lib/Target/SparcV9</tt> for code generation. For example, the <tt>llvm/lib/Target/SparcV9</tt>
directory holds the Sparc machine description while directory holds the Sparc machine description while
<tt>llvm/lib/Target/CBackend</tt> implements the LLVM-to-C converter</dd> <tt>llvm/lib/Target/CBackend</tt> implements the LLVM-to-C converter.</dd>
<dt><tt><b>llvm/lib/CodeGen/</b></tt></dt> <dt><tt><b>llvm/lib/CodeGen/</b></tt></dt>
<dd> This directory contains the major parts of the code generator: Instruction <dd> This directory contains the major parts of the code generator: Instruction
@@ -1251,8 +1253,8 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
all from one command line. <tt>llvmc</tt> also takes care of processing the all from one command line. <tt>llvmc</tt> also takes care of processing the
dependent libraries found in bytecode. This reduces the need to get the dependent libraries found in bytecode. This reduces the need to get the
traditional <tt>-l&lt;name&gt;</tt> options right on the command line. Please traditional <tt>-l&lt;name&gt;</tt> options right on the command line. Please
note that this tool is new in 1.4 and considered experimental. It will be note that this tool, while functional, is still experimental and not feature
fully supported in 1.5.</dd> complete.</dd>
<dt><tt><b>llvm-ar</b></tt></dt> <dt><tt><b>llvm-ar</b></tt></dt>
<dd>The archiver produces an archive containing <dd>The archiver produces an archive containing
@@ -1271,9 +1273,8 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
<dd><tt>llvm-ld</tt> is very similar to gccld and provides a general purpose <dd><tt>llvm-ld</tt> is very similar to gccld and provides a general purpose
and extensible linker for LLVM. This is the linker invoked by <tt>llvmc</tt>. and extensible linker for LLVM. This is the linker invoked by <tt>llvmc</tt>.
It allows optimization modules to be loaded so that language specific It allows optimization modules to be loaded so that language specific
optimizations can be applied at link time. Please note that this tool is new optimizations can be applied at link time. This tool is considered
in LLVM 1.4 and still considered experimental. It will be fully supported in experimental.</dd>
LLVM 1.5.</dd>
<dt><tt><b>llvm-link</b></tt></dt> <dt><tt><b>llvm-link</b></tt></dt>
<dd><tt>llvm-link</tt>, not surprisingly, links multiple LLVM modules into <dd><tt>llvm-link</tt>, not surprisingly, links multiple LLVM modules into
@@ -1291,7 +1292,7 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
<dt><tt><b>llc</b></tt></dt> <dt><tt><b>llc</b></tt></dt>
<dd> <tt>llc</tt> is the LLVM backend compiler, which <dd> <tt>llc</tt> is the LLVM backend compiler, which
translates LLVM bytecode to a SPARC or x86 assembly file, or to C code (with translates LLVM bytecode to a native code assembly file or to C code (with
the -march=c option).</dd> the -march=c option).</dd>
<dt><tt><b>llvm-gcc</b></tt></dt> <dt><tt><b>llvm-gcc</b></tt></dt>
@@ -1299,8 +1300,7 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
that has been retargeted to emit LLVM code as the machine code output. It that has been retargeted to emit LLVM code as the machine code output. It
works just like any other GCC compiler, taking the typical <tt>-c, -S, -E, works just like any other GCC compiler, taking the typical <tt>-c, -S, -E,
-o</tt> options that are typically used. The source code for the -o</tt> options that are typically used. The source code for the
<tt>llvm-gcc</tt> tool is currently not included in the LLVM CVS tree <tt>llvm-gcc</tt> tool is available as a separate CVS module.
because it is quite large and not very interesting.
<blockquote> <blockquote>
<dl> <dl>
<dt><tt><b>gccas</b></tt></dt> <dt><tt><b>gccas</b></tt></dt>

View File

@@ -148,7 +148,7 @@ than the caller, etc. The only case not supported are varargs calls, but that
could be added if desired. could be added if desired.
</p> </p>
<p>In order for a front-end to get a guaranteed tail call, it must mark <p>To ensure a call is interpreted as a tail call, a front-end must mark
functions as "fastcc", mark calls with the 'tail' marker, and follow the call functions as "fastcc", mark calls with the 'tail' marker, and follow the call
with a return of the called value (or void). The optimizer and code generator with a return of the called value (or void). The optimizer and code generator
attempt to handle more general cases, but the simple case will always work if attempt to handle more general cases, but the simple case will always work if
@@ -217,7 +217,7 @@ multiple of 8 bytes in size.
hitting swap during optimized builds</a>.</li> hitting swap during optimized builds</a>.</li>
<li>The <a href="http://llvm.cs.uiuc.edu/ProjectsWithLLVM/#llvmtv">LLVM <li>The <a href="http://llvm.cs.uiuc.edu/ProjectsWithLLVM/#llvmtv">LLVM
Transformation Visualizer</a> (llvm-tv) project has been updated to Transformation Visualizer</a> (llvm-tv) project has been updated to
work with LLVM CVS.</li> work with LLVM 1.5.</li>
<li>Nightly tester output is now archived on the <a <li>Nightly tester output is now archived on the <a
href="http://mail.cs.uiuc.edu/pipermail/llvm-testresults/"> href="http://mail.cs.uiuc.edu/pipermail/llvm-testresults/">
llvm-testresults</a> mailing list.</li> llvm-testresults</a> mailing list.</li>
@@ -243,7 +243,7 @@ only accessed in main to SSA registers.</li>
<li>Loops with trip counts based on array pointer comparisons (e.g. "<tt>for (i <li>Loops with trip counts based on array pointer comparisons (e.g. "<tt>for (i
= 0; &amp;A[i] != &amp;A[n]; ++i) ...</tt>") are optimized better than before, = 0; &amp;A[i] != &amp;A[n]; ++i) ...</tt>") are optimized better than before,
which primarily helps iterator-intensive C++ codes.</li> which primarily helps iterator-intensive C++ code.</li>
<li>The optimizer now eliminates simple cases where redundant conditions exist <li>The optimizer now eliminates simple cases where redundant conditions exist
between neighboring blocks.</li> between neighboring blocks.</li>
@@ -353,8 +353,8 @@ things), is more aggressive and intelligent.</li>
<p>LLVM is known to work on the following platforms:</p> <p>LLVM is known to work on the following platforms:</p>
<ul> <ul>
<li>Intel and AMD machines running Red Hat Linux and FreeBSD (and probably <li>Intel and AMD machines running Red Hat Linux, Fedora Core and FreeBSD
other unix-like systems).</li> (and probably other unix-like systems).</li>
<li>Sun UltraSPARC workstations running Solaris 8.</li> <li>Sun UltraSPARC workstations running Solaris 8.</li>
<li>Intel and AMD machines running on Win32 with the Cygwin libraries (limited <li>Intel and AMD machines running on Win32 with the Cygwin libraries (limited
support is available for native builds with Visual C++).</li> support is available for native builds with Visual C++).</li>
@@ -694,7 +694,7 @@ frontends.</li>
<div class="doc_text"> <div class="doc_text">
<ul> <ul>
<li>None yet</li> <li><a href="http://llvm.cs.uiuc.edu/PR566">Memory Mapped I/O Intrinsics do not fence memory</a></li>
</ul> </ul>
</div> </div>

View File

@@ -109,15 +109,16 @@ described the instruction set with the assembly printer generator in mind, that
step can be almost automated.</li> step can be almost automated.</li>
</ul> </ul>
<p>Now, for static code generation you also need to write an instruction <p>You also need to write an instruction selector for your platform. The
selector for your platform: see <tt>lib/Target/*/*ISelSimple.cpp</tt> which recommended method is the <a
is no longer "simple" but it gives you the idea: you have to be able to create href="CodeGenerator.html#instselect">pattern-matching instruction selector</a>,
MachineInstrs for any given LLVM instruction using the <tt>InstVisitor</tt> examples of which you can see in other targets:
pattern, and produce a <tt>MachineFunction</tt> with <tt>lib/Target/*/*ISelPattern.cpp</tt>. The former method for writing
<tt>MachineBasicBlock</tt>s full of <tt><a instruction selectors (<b>not</b> recommended for new targets) is evident in
href="CodeGenerator.html#machineinstr">MachineInstr</a></tt>s for a <tt>lib/Target/*/*ISelSimple.cpp</tt>, which are <tt>InstVisitor</tt>-based
corresponding LLVM Function. Creating an instruction selector is perhaps the translators, generating code for an LLVM instruction at a time. Creating an
most time-consuming part of creating a back-end.</p> instruction selector is perhaps the most time-consuming part of creating a
back-end.</p>
<p>To create a JIT for your platform:</p> <p>To create a JIT for your platform:</p>
@@ -229,10 +230,13 @@ how the C backend is written.</p>
<ul> <ul>
<li><a href="CodeGenerator.html">Code generator</a> - <li><a href="CodeGenerator.html">Code generator</a> -
describes some of the classes in code generation at a high level, but describes some of the classes in code generation at a high level, but
it is not (yet) complete.</li> it is not (yet) complete</li>
<li><a href="TableGenFundamentals.html">TableGen fundamentals</a> - <li><a href="TableGenFundamentals.html">TableGen fundamentals</a> -
describes how to use TableGen to describe your target information succinctly describes how to use TableGen to describe your target information
</li> succinctly</li>
<li><a href="HowToSubmitABug.html#codegen">Debugging code generation with
bugpoint</a> - shows bugpoint usage scenarios to simplify backend
development</li>
</ul> </ul>
</div> </div>

View File

@@ -0,0 +1,46 @@
; This example was not getting level raised because of a negative index from
; this instruction:
; %reg111 = add int %reg110, -12
; this testcase is distilled from this C source:
; void foo(int j, int *x) {
; unsigned i;
; for (i = 12; i < 14; ++i)
; x[j*i-12] = j;
; }
; RUN: llvm-as < %s | opt -raise | llvm-dis | grep ' cast ' | not grep '*'
implementation
void "foo"(int %j, int * %x)
begin
bb0: ;[#uses=0]
br label %bb1
bb1: ;[#uses=2]
%reg108 = cast int * %x to sbyte * ; <sbyte *> [#uses=1]
%cond219 = setgt ulong 12, 13 ; <bool> [#uses=1]
br bool %cond219, label %bb3, label %bb2
bb2: ;[#uses=3]
%cann-indvar = phi uint [ 0, %bb1 ], [ %add1-indvar, %bb2 ] ; <uint> [#uses=2]
%reg117 = add uint %cann-indvar, 12 ; <uint> [#uses=2]
%add1-indvar = add uint %cann-indvar, 1 ; <uint> [#uses=1]
%cast224 = cast uint %reg117 to uint ; <uint> [#uses=1]
%cast225 = cast uint %reg117 to int ; <int> [#uses=1]
%reg110 = mul int %j, %cast225 ; <int> [#uses=1]
%reg111 = add int %reg110, -12 ; <int> [#uses=1]
%cast222 = cast int %reg111 to uint ; <uint> [#uses=1]
%reg113 = shl uint %cast222, ubyte 2 ; <uint> [#uses=1]
%cast114 = cast uint %reg113 to ulong ; <ulong> [#uses=1]
%cast115 = cast ulong %cast114 to sbyte * ; <sbyte *> [#uses=1]
%reg116 = add sbyte * %reg108, %cast115 ; <sbyte *> [#uses=1]
%cast223 = cast sbyte * %reg116 to int * ; <int *> [#uses=1]
store int %j, int * %cast223
%reg118 = add uint %cast224, 1 ; <uint> [#uses=1]
%cond220 = setle uint %reg118, 13 ; <bool> [#uses=1]
br bool %cond220, label %bb2, label %bb3
bb3: ;[#uses=2]
ret void
end