From lattner at cs.uiuc.edu Mon May 16 00:12:47 2005 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 16 May 2005 00:12:47 -0500 Subject: [llvm-commits] CVS: llvm-www/www-index.html Message-ID: <200505160512.j4G5Cl2W014205@apoc.cs.uiuc.edu> Changes in directory llvm-www: www-index.html updated: 1.119 -> 1.120 --- Log message: updates, remove link to CurrentWork --- Diffs of the changes: (+7 -6) www-index.html | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-) Index: llvm-www/www-index.html diff -u llvm-www/www-index.html:1.119 llvm-www/www-index.html:1.120 --- llvm-www/www-index.html:1.119 Fri Jan 7 13:54:54 2005 +++ llvm-www/www-index.html Mon May 16 00:12:30 2005 @@ -35,10 +35,9 @@ GCC-based C & C++ front-end, a link-time optimization framework with a growing set of global and interprocedural analyses and transformations, static back-ends for the X86, -PowerPC, and SPARC V9 architectures, a back-end which emits portable C code, and -a Just-In-Time compiler for X86, PowerPC, and SPARC V9 processors. See "Current Projects" for information about other -components under development.

+PowerPC, IA-64, Alpha, & SPARC V9 architectures, a back-end which emits +portable C code, and a Just-In-Time compiler for X86, PowerPC, and SPARC V9 +processors.

  • LLVM does not imply things that you would expect from a high-level virtual machine. It does not require garbage collection or @@ -49,13 +48,15 @@

    LLVM is a robust system, particularly well suited for developing new -mid-level language-independent analyses and optimizations of all sorts, +mid-level +language-independent analyses and optimizations of all sorts, including those that require extensive interprocedural analysis. LLVM is also a great target for front-end development for conventional or research programming languages, including those which require compile-time, link-time, or run-time -optimization for effective implementation. We have an incomplete for effective implementation, proper tail calls or garbage +collection. We have an incomplete list of projects which have used LLVM for various purposes, showing that you can get up-and-running quickly with LLVM, giving time to do interesting things, even if you only have a semester in a University From lattner at cs.uiuc.edu Mon May 16 00:13:46 2005 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 16 May 2005 00:13:46 -0500 Subject: [llvm-commits] CVS: llvm-www/header.incl CurrentWork.html Message-ID: <200505160513.j4G5Dk7m014241@apoc.cs.uiuc.edu> Changes in directory llvm-www: header.incl updated: 1.38 -> 1.39 CurrentWork.html (r1.10) removed --- Log message: This page is horribly out of date. --- Diffs of the changes: (+0 -1) header.incl | 1 - 1 files changed, 1 deletion(-) Index: llvm-www/header.incl diff -u llvm-www/header.incl:1.38 llvm-www/header.incl:1.39 --- llvm-www/header.incl:1.38 Sat Apr 23 11:00:10 2005 +++ llvm-www/header.incl Mon May 16 00:13:33 2005 @@ -27,7 +27,6 @@ FAQ
    Publications
    LLVM Projects
    -Current Work
    Open Projects
    LLVM People
    Bug Database
    From lattner at cs.uiuc.edu Mon May 16 00:17:08 2005 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 16 May 2005 00:17:08 -0500 Subject: [llvm-commits] CVS: llvm-www/ProjectsWithLLVM/index.html Message-ID: <200505160517.j4G5H8QG014279@apoc.cs.uiuc.edu> Changes in directory llvm-www/ProjectsWithLLVM: index.html updated: 1.22 -> 1.23 --- Log message: add a link --- Diffs of the changes: (+3 -1) index.html | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) Index: llvm-www/ProjectsWithLLVM/index.html diff -u llvm-www/ProjectsWithLLVM/index.html:1.22 llvm-www/ProjectsWithLLVM/index.html:1.23 --- llvm-www/ProjectsWithLLVM/index.html:1.22 Tue Mar 15 16:59:00 2005 +++ llvm-www/ProjectsWithLLVM/index.html Mon May 16 00:16:54 2005 @@ -6,7 +6,9 @@

    This page is an incomplete list of the projects built with LLVM, sorted in reverse chronological order. The idea of this list is to show some of the things that have been done with LLVM for various course projects or for other -purposes, which can be used as a source of ideas for future projects.

    +purposes, which can be used as a source of ideas for future projects. Another +good place to look is the list of published papers and +theses that use LLVM.

    Note that this page is not intended to reflect that current state of LLVM or show endorsement of any particular project over another. This is just a From duraid at octopus.com.au Mon May 16 00:39:11 2005 From: duraid at octopus.com.au (Duraid Madina) Date: Mon, 16 May 2005 00:39:11 -0500 Subject: [llvm-commits] CVS: llvm/autoconf/configure.ac Message-ID: <200505160539.AAA03080@zion.cs.uiuc.edu> Changes in directory llvm/autoconf: configure.ac updated: 1.180 -> 1.181 --- Log message: detect HP-UX when configuring --- Diffs of the changes: (+3 -0) configure.ac | 3 +++ 1 files changed, 3 insertions(+) Index: llvm/autoconf/configure.ac diff -u llvm/autoconf/configure.ac:1.180 llvm/autoconf/configure.ac:1.181 --- llvm/autoconf/configure.ac:1.180 Sun May 15 17:15:11 2005 +++ llvm/autoconf/configure.ac Mon May 16 00:39:00 2005 @@ -111,6 +111,9 @@ *-*-freebsd*) llvm_cv_os_type="FreeBSD" llvm_cv_platform_type="Unix" ;; + *-*-hpux*) + llvm_cv_os_type="HP-UX" + llvm_cv_platform_type="Unix" ;; *-*-interix*) llvm_cv_os_type="Interix" llvm_cv_platform_type="Unix" ;; From duraid at octopus.com.au Mon May 16 01:38:28 2005 From: duraid at octopus.com.au (Duraid Madina) Date: Mon, 16 May 2005 01:38:28 -0500 Subject: [llvm-commits] CVS: llvm/Makefile.rules Message-ID: <200505160638.BAA03448@zion.cs.uiuc.edu> Changes in directory llvm: Makefile.rules updated: 1.309 -> 1.310 --- Log message: hp-ux needs this to get through the System/Support libs --- Diffs of the changes: (+4 -0) Makefile.rules | 4 ++++ 1 files changed, 4 insertions(+) Index: llvm/Makefile.rules diff -u llvm/Makefile.rules:1.309 llvm/Makefile.rules:1.310 --- llvm/Makefile.rules:1.309 Fri May 13 13:32:54 2005 +++ llvm/Makefile.rules Mon May 16 01:38:09 2005 @@ -343,6 +343,10 @@ CompileCommonOpts := -Wall -W -Wwrite-strings -Wno-unused +ifeq ($(OS),HP-UX) + CompileCommonOpts += -D_REENTRANT -D_HPUX_SOURCE +endif + LD.Flags += -L$(LibDir) -L$(LLVMLibDir) CPP.Flags += -I$(PROJ_OBJ_DIR) -I$(PROJ_SRC_DIR) \ -I$(PROJ_OBJ_ROOT)/include \ From duraid at octopus.com.au Mon May 16 01:46:08 2005 From: duraid at octopus.com.au (Duraid Madina) Date: Mon, 16 May 2005 01:46:08 -0500 Subject: [llvm-commits] CVS: llvm/lib/Support/IsInf.cpp Message-ID: <200505160646.BAA03510@zion.cs.uiuc.edu> Changes in directory llvm/lib/Support: IsInf.cpp updated: 1.6 -> 1.7 --- Log message: HP-UX system headers make a mess of isinf(), so much so that gcc fixincludes can't patch it up for c++ (works in C though) --- Diffs of the changes: (+4 -0) IsInf.cpp | 4 ++++ 1 files changed, 4 insertions(+) Index: llvm/lib/Support/IsInf.cpp diff -u llvm/lib/Support/IsInf.cpp:1.6 llvm/lib/Support/IsInf.cpp:1.7 --- llvm/lib/Support/IsInf.cpp:1.6 Thu Apr 21 17:52:05 2005 +++ llvm/lib/Support/IsInf.cpp Mon May 16 01:45:57 2005 @@ -29,6 +29,10 @@ // system header /usr/include/math.h # include static int isinf(double x) { return !finite(x) && x==x; } +#elif defined(__hpux) +// HP-UX is "special" +#include +static int isinf(double x) { return ((x)==INFINITY)||((x)==-INFINITY); } #else # error "Don't know how to get isinf()" #endif From duraid at octopus.com.au Mon May 16 02:00:05 2005 From: duraid at octopus.com.au (Duraid Madina) Date: Mon, 16 May 2005 02:00:05 -0500 Subject: [llvm-commits] CVS: llvm/lib/System/Unix/TimeValue.inc Message-ID: <200505160700.CAA03647@zion.cs.uiuc.edu> Changes in directory llvm/lib/System/Unix: TimeValue.inc updated: 1.8 -> 1.9 --- Log message: comment the hpux bit --- Diffs of the changes: (+1 -0) TimeValue.inc | 1 + 1 files changed, 1 insertion(+) Index: llvm/lib/System/Unix/TimeValue.inc diff -u llvm/lib/System/Unix/TimeValue.inc:1.8 llvm/lib/System/Unix/TimeValue.inc:1.9 --- llvm/lib/System/Unix/TimeValue.inc:1.8 Thu May 5 17:33:06 2005 +++ llvm/lib/System/Unix/TimeValue.inc Mon May 16 01:59:53 2005 @@ -26,6 +26,7 @@ time_t ourTime = time_t(this->toEpochTime()); #ifdef __hpux +// note that the following line needs -D_REENTRANT on HP-UX to be picked up asctime_r(localtime(&ourTime), buffer); #else ::asctime_r(::localtime(&ourTime), buffer); From lattner at cs.uiuc.edu Mon May 16 02:07:50 2005 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 16 May 2005 02:07:50 -0500 Subject: [llvm-commits] CVS: llvm/docs/ReleaseNotes.html Message-ID: <200505160707.j4G77ont014585@apoc.cs.uiuc.edu> Changes in directory llvm/docs: ReleaseNotes.html updated: 1.322 -> 1.323 --- Log message: more edits --- Diffs of the changes: (+23 -14) ReleaseNotes.html | 37 +++++++++++++++++++++++-------------- 1 files changed, 23 insertions(+), 14 deletions(-) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.322 llvm/docs/ReleaseNotes.html:1.323 --- llvm/docs/ReleaseNotes.html:1.322 Sun May 15 11:01:20 2005 +++ llvm/docs/ReleaseNotes.html Mon May 16 01:58:39 2005 @@ -83,7 +83,9 @@ This release includes new native code generators for Alpha, IA-64, and SPARC-V8 (32-bit SPARC). These code generators are still -beta quality, but are progressing rapidly. +beta quality, but are progressing rapidly. The Alpha backend is implemented +with an eye towards being compatible with the widely used SimpleScalar +simulator.

    @@ -106,17 +108,17 @@ -
    New Support For Custom +
    -

    LLVM 1.5 adds supports for custom and -target-specific calling conventions. Traditionally, the LLVM code -generators match the native C calling conventions for a target. This is -important for compatibility, but is not very flexible. This release allows -custom calling conventions to be established for functions, and defines three -target-independent conventions (C call, fast call, and cold call) which may be -supported by code generators. When possible, the LLVM optimizer promotes C +

    LLVM 1.5 adds supports for per-function +calling conventions. Traditionally, the LLVM code generators match the +native C calling conventions for a target. This is important for compatibility, +but is not very flexible. This release allows custom calling conventions to be +established for functions, and defines three target-independent conventions (C call, fast call, and cold call) which may +be supported by code generators. When possible, the LLVM optimizer promotes C functions to use the "fastcc" convention, allowing the use of more efficient calling sequences (e.g., parameters are passed in registers in the X86 target).

    @@ -129,7 +131,7 @@ +Proper Tail Calls
  • -
  • LLVM now builds on HP-UX with the HP aCC Compiler.
  • +
  • LLVM now mostly builds on HP-UX with the HP aCC Compiler.
  • The LLVM X86 backend can now emit Cygwin-compatible .s files.
  • LLVM now includes workarounds in the code generator generator which reduces the likelyhood of GCC @@ -240,6 +242,11 @@
  • The code generator now uses information about takes advantage of commutative two-address instructions when performing register allocation.
  • +
  • The optimizer now eliminates simple cases where redundant conditions exist +between neighboring blocks.
  • + +
  • The reassociation pass (which turns (1+X+3) into (X+1+3) among other +things), is more aggressive an intelligent.
  • @@ -265,9 +272,11 @@

    Code Generator Bugs:

    1. [cbackend] Logical constant - expressions (and/or/xor) not implemented
    2. + expressions (and/or/xor) not implemented.
    3. [cbackend] C backend does not - respect 'volatile'
    4. + respect 'volatile'. +
    5. The JIT sometimes miscompiled globals and constant pool entries for + 64-bit integer constants on 32-bit hosts.

    Bugs in the C/C++ front-end:

    @@ -777,7 +786,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2005/05/15 16:01:20 $ + Last modified: $Date: 2005/05/16 06:58:39 $ From lattner at cs.uiuc.edu Mon May 16 10:37:37 2005 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 16 May 2005 10:37:37 -0500 Subject: [llvm-commits] CVS: llvm/docs/ReleaseNotes.html Message-ID: <200505161537.j4GFbbTd015676@apoc.cs.uiuc.edu> Changes in directory llvm/docs: ReleaseNotes.html updated: 1.323 -> 1.324 --- Log message: fix a typo duraid noticed --- Diffs of the changes: (+2 -2) ReleaseNotes.html | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.323 llvm/docs/ReleaseNotes.html:1.324 --- llvm/docs/ReleaseNotes.html:1.323 Mon May 16 01:58:39 2005 +++ llvm/docs/ReleaseNotes.html Mon May 16 10:37:19 2005 @@ -239,7 +239,7 @@ = 0; &A[i] != &A[100]; ++i) ...") are optimized better than before, which primarily helps iterator-intensive C++ codes. -
  • The code generator now uses information about takes advantage of commutative +
  • The code generator now can provide and use information about commutative two-address instructions when performing register allocation.
  • The optimizer now eliminates simple cases where redundant conditions exist @@ -786,7 +786,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2005/05/16 06:58:39 $ + Last modified: $Date: 2005/05/16 15:37:19 $ From criswell at cs.uiuc.edu Mon May 16 11:18:03 2005 From: criswell at cs.uiuc.edu (John Criswell) Date: Mon, 16 May 2005 11:18:03 -0500 Subject: [llvm-commits] CVS: llvm/docs/LangRef.html Message-ID: <200505161618.LAA18178@choi.cs.uiuc.edu> Changes in directory llvm/docs: LangRef.html updated: 1.107 -> 1.108 --- Log message: Added a note about how the type can be omitted in call instructions. Added a note about how getelementptr can be used to index into structures or arrays. Fixed some typos, spelling, etc. --- Diffs of the changes: (+22 -18) LangRef.html | 40 ++++++++++++++++++++++------------------ 1 files changed, 22 insertions(+), 18 deletions(-) Index: llvm/docs/LangRef.html diff -u llvm/docs/LangRef.html:1.107 llvm/docs/LangRef.html:1.108 --- llvm/docs/LangRef.html:1.107 Sun May 15 14:39:26 2005 +++ llvm/docs/LangRef.html Mon May 16 11:17:45 2005 @@ -1918,7 +1918,8 @@ elements of the aggregate object to index to. The actual types of the arguments provided depend on the type of the first pointer argument. The 'getelementptr' instruction is used to index down through the type -levels of a structure. When indexing into a structure, only uint +levels of a structure or to a specific index in an array. When indexing into a +structure, only uint integer constants are allowed. When indexing into an array or pointer, int and long indexes are allowed of any sign.

    @@ -1972,7 +1973,7 @@ sbyte }' type, another structure. The third index indexes into the second element of the structure, yielding a '[10 x [20 x int]]' type, an array. The two dimensions of the array are subscripted into, yielding an -'int' type. The 'getelementptr' instruction return a pointer +'int' type. The 'getelementptr' instruction returns a pointer to this element, thus computing a value of 'int*' type.

    Note that it is perfectly legal to index partially through a @@ -2119,7 +2120,7 @@

    If the boolean condition evaluates to true, the instruction returns the first -value argument, otherwise it returns the second value argument. +value argument; otherwise, it returns the second value argument.

    Example:
    @@ -2169,13 +2170,14 @@
  • 'ty': shall be the signature of the pointer to function value being invoked. The argument types must match the types implied by this - signature.

    + signature. This type can be omitted if the function is not varargs and + if the function type does not return a pointer to a function.

  • 'fnptrval': An LLVM value containing a pointer to a function to be invoked. In most cases, this is a direct function invocation, but indirect calls are just as possible, calling an arbitrary pointer - to function values.

    + to function value.

  • 'function args': argument list whose types match the @@ -2248,9 +2250,9 @@

    vanext is an LLVM instruction instead of an intrinsic function because it takes a type as an -argument. The type refers to the current argument in the va_list, it +argument. The type refers to the current argument in the va_list; it tells the compiler how far on the stack it needs to advance to find the next -argument

    +argument.

    Example:
    @@ -2297,7 +2299,7 @@ function.

    vaarg is an LLVM instruction instead of an intrinsic function because it takes an type as an +href="#intrinsics">intrinsic function because it takes a type as an argument.

    Example:
    @@ -2313,14 +2315,14 @@

    LLVM supports the notion of an "intrinsic function". These functions have -well known names and semantics, and are required to follow certain +well known names and semantics and are required to follow certain restrictions. Overall, these instructions represent an extension mechanism for the LLVM language that does not require changing all of the transformations in LLVM to add to the language (or the bytecode reader/writer, the parser, etc...).

    -

    Intrinsic function names must all start with an "llvm." prefix, this -prefix is reserved in LLVM for intrinsic names, thus functions may not be named +

    Intrinsic function names must all start with an "llvm." prefix. This +prefix is reserved in LLVM for intrinsic names; thus, functions may not be named this. Intrinsic functions must always be external functions: you cannot define the body of intrinsic functions. Intrinsic functions may only be used in call or invoke instructions: it is illegal to take the address of an intrinsic @@ -2328,7 +2330,7 @@ language, it is required that they all be documented here if any are added.

    -

    To learn how to add an intrinsics, please see the To learn how to add an intrinsic function, please see the Extending LLVM Guide.

    @@ -2396,7 +2398,7 @@ returns a va_list element, so that the next vaarg will produce the first variable argument passed to the function. Unlike the C va_start macro, this intrinsic does not need to know the -last argument of the function, the compiler can figure that out.

    +last argument of the function; the compiler can figure that out.

    Note that this intrinsic function is only legal to be called from within the body of a variable argument function.

    @@ -2693,8 +2695,9 @@

    The 'llvm.prefetch' intrinsic is a hint to the code generator to insert -a prefetch instruction if supported, otherwise it is a noop. Prefetches have no -effect on the behavior of the program, but can change its performance +a prefetch instruction if supported; otherwise, it is a noop. Prefetches have +no +effect on the behavior of the program but can change its performance characteristics.

    @@ -2735,13 +2738,14 @@

    -The 'llvm.pcmarker' intrinsic is a method to export a PC in a region of +The 'llvm.pcmarker' intrinsic is a method to export a Program Counter +(PC) in a region of code to simulators and other tools. The method is target specific, but it is expected that the marker will use exported symbols to transmit the PC of the marker. The marker makes no guaranties that it will remain with any specific instruction after optimizations. It is possible that the presense of a marker will inhibit optimizations. The intended use is to be inserted after optmizations to allow -corrolations of simulation runs. +correlations of simulation runs.

    Arguments:
    @@ -3301,7 +3305,7 @@ Chris Lattner
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2005/05/15 19:39:26 $ + Last modified: $Date: 2005/05/16 16:17:45 $ From lattner at cs.uiuc.edu Mon May 16 11:30:26 2005 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 16 May 2005 11:30:26 -0500 Subject: [llvm-commits] CVS: llvm/docs/llvm.css Message-ID: <200505161630.j4GGUQOq015839@apoc.cs.uiuc.edu> Changes in directory llvm/docs: llvm.css updated: 1.27 -> 1.28 --- Log message: flush on the right and indented on the left looks a bit weird. --- Diffs of the changes: (+1 -1) llvm.css | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/docs/llvm.css diff -u llvm/docs/llvm.css:1.27 llvm/docs/llvm.css:1.28 --- llvm/docs/llvm.css:1.27 Wed Feb 9 16:47:47 2005 +++ llvm/docs/llvm.css Mon May 16 11:30:10 2005 @@ -47,7 +47,7 @@ border-bottom: 1px solid #999999; font-size: 12pt; width: 75%; } .doc_author { text-align: left; font-weight: bold; padding-left: 20pt } -.doc_text { text-align: left; padding-left: 20pt } +.doc_text { text-align: left; padding-left: 20pt; padding-right: 10pt } .doc_footer { text-align: left; padding: 0 0 0 0 } From duraid at octopus.com.au Mon May 16 11:33:45 2005 From: duraid at octopus.com.au (Duraid Madina) Date: Mon, 16 May 2005 11:33:45 -0500 Subject: [llvm-commits] CVS: llvm/configure Message-ID: <200505161633.LAA28302@zion.cs.uiuc.edu> Changes in directory llvm: configure updated: 1.185 -> 1.186 --- Log message: pretty tiny change (looks like adding the HP-UX detection and line number changes to me) - not committing autoconf/configure.ac (oops, already committed that!) - not committing include/llvm/Config/config.h.in (it remains unchanged) --- Diffs of the changes: (+32 -29) configure | 61 ++++++++++++++++++++++++++++++++----------------------------- 1 files changed, 32 insertions(+), 29 deletions(-) Index: llvm/configure diff -u llvm/configure:1.185 llvm/configure:1.186 --- llvm/configure:1.185 Sun May 15 17:15:11 2005 +++ llvm/configure Mon May 16 11:33:34 2005 @@ -1714,6 +1714,9 @@ *-*-freebsd*) llvm_cv_os_type="FreeBSD" llvm_cv_platform_type="Unix" ;; + *-*-hpux*) + llvm_cv_os_type="HP-UX" + llvm_cv_platform_type="Unix" ;; *-*-interix*) llvm_cv_os_type="Interix" llvm_cv_platform_type="Unix" ;; @@ -8232,7 +8235,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext + echo '#line 10229 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -10708,7 +10711,7 @@ # Provide some information about the compiler. -echo "$as_me:10711:" \ +echo "$as_me:10714:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 @@ -11765,11 +11768,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11768: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11771: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:11772: \$? = $ac_status" >&5 + echo "$as_me:11775: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -12008,11 +12011,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:12011: $lt_compile\"" >&5) + (eval echo "\"\$as_me:12014: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:12015: \$? = $ac_status" >&5 + echo "$as_me:12018: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -12068,11 +12071,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:12071: $lt_compile\"" >&5) + (eval echo "\"\$as_me:12074: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:12075: \$? = $ac_status" >&5 + echo "$as_me:12078: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -14253,7 +14256,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5) + (eval echo "\"\$as_me:16550: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16551: \$? = $ac_status" >&5 + echo "$as_me:16554: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -16604,11 +16607,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16607: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16610: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16611: \$? = $ac_status" >&5 + echo "$as_me:16614: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17965,7 +17968,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5) + (eval echo "\"\$as_me:18906: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18907: \$? = $ac_status" >&5 + echo "$as_me:18910: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -18960,11 +18963,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18963: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18966: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:18967: \$? = $ac_status" >&5 + echo "$as_me:18970: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -20999,11 +21002,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:21002: $lt_compile\"" >&5) + (eval echo "\"\$as_me:21005: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:21006: \$? = $ac_status" >&5 + echo "$as_me:21009: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -21242,11 +21245,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:21245: $lt_compile\"" >&5) + (eval echo "\"\$as_me:21248: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:21249: \$? = $ac_status" >&5 + echo "$as_me:21252: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -21302,11 +21305,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:21305: $lt_compile\"" >&5) + (eval echo "\"\$as_me:21308: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:21309: \$? = $ac_status" >&5 + echo "$as_me:21312: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -23487,7 +23490,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext < Changes in directory llvm/docs: ReleaseNotes.html updated: 1.324 -> 1.325 --- Log message: more edits, include stuff from the status update --- Diffs of the changes: (+63 -25) ReleaseNotes.html | 88 ++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 63 insertions(+), 25 deletions(-) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.324 llvm/docs/ReleaseNotes.html:1.325 --- llvm/docs/ReleaseNotes.html:1.324 Mon May 16 10:37:19 2005 +++ llvm/docs/ReleaseNotes.html Mon May 16 11:56:09 2005 @@ -62,10 +62,9 @@

    This is the sixth public release of the LLVM Compiler Infrastructure.

    -

    At this time, LLVM is known to correctly compile a wide range of C and C++ -programs, including the SPEC CPU95 & 2000 suite. It includes bug fixes for -those problems found since the 1.4 release and a large number of new features -and enhancements, described below.

    +

    LLVM 1.5 is known to correctly compile a wide range of C and C++ programs, +includes bug fixes for those problems found since the 1.4 release, and includes +a large number of new features and enhancements, described below.

    @@ -101,7 +100,7 @@ generating efficient code for getelementptr instructions, promoting small integer types to larger types (e.g. for RISC targets with one size of -integer registers), expanding 64-bit integer operations for 32-bit hosts, etc. +integer registers), expanding 64-bit integer operations for 32-bit targets, etc. Currently, the X86, PowerPC, Alpha, and IA-64 backends use this framework. The SPARC backends will be migrated when time permits.

    @@ -138,7 +137,7 @@ href="http://doi.acm.org/10.1145/277650.277719">proper tail calls, as required to implement languages like Scheme. Tail calls make use of two features: custom calling conventions (described above), which allow the code -generator to emit code for the caller to deallocate its own stack when it +generator to use a convention where the caller deallocates its stack before it returns. The second feature is a flag on the call instruction, which indicates that the callee does not access the caller's stack frame (indicating that it is acceptable to deallocate the caller stack @@ -149,11 +148,11 @@ could be added if desired.

    -

    In order for a front-end to get guaranteed tail call, it must mark 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 attempt -to handle more general cases, but the simple case will always work if the code -generator supports tail calls. Here is a simple example:

    +

    In order for a front-end to get a guaranteed tail call, it must mark +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 +attempt to handle more general cases, but the simple case will always work if +the code generator supports tail calls. Here is an example:

         fastcc int %bar(int %X, int(double, int)* %FP) {       ; fastcc
    @@ -198,7 +197,8 @@
       
  • LLVM 1.5 is now about 15% faster than LLVM 1.4 and its core data structures use about 30% less memory.
  • Support for Microsoft Visual Studio is improved, and now documented.
  • + href="GettingStartedVS.html">now documented. Most LLVM tools build + natively with Visual C++ now.
  • Configuring LLVM to build a subset of the available targets is now implemented, via the --enable-targets= option.
  • @@ -215,7 +215,13 @@
  • LLVM now includes workarounds in the code generator generator which reduces the likelyhood of GCC hitting swap during optimized builds.
  • -
  • The PowerPC backend generates far better code than in LLVM 1.4.
  • +
  • The LLVM + Transformation Visualizer (llvm-tv) project has been updated to + work with LLVM CVS.
  • +
  • Nightly tester output is now archived on the + llvm-testresults mailing list.
  • + @@ -226,31 +232,62 @@
      -
    1. The -globalopt pass now promotes non-address-taken static globals that are -only accessed in main to SSA registers.
    2. -
    3. The new -simplify-libcalls pass improves code generated for well-known library calls. The pass optimizes calls to many of the string, memory, and standard I/O functions (e.g. replace the calls with simpler/faster calls) when possible, given information known statically about the arguments to the call.
    4. +
    5. The -globalopt pass now promotes non-address-taken static globals that are +only accessed in main to SSA registers.
    6. +
    7. Loops with trip counts based on array pointer comparisons (e.g. "for (i -= 0; &A[i] != &A[100]; ++i) ...") are optimized better than before, += 0; &A[i] != &A[n]; ++i) ...") are optimized better than before, which primarily helps iterator-intensive C++ codes.
    8. -
    9. The code generator now can provide and use information about commutative -two-address instructions when performing register allocation.
    10. -
    11. The optimizer now eliminates simple cases where redundant conditions exist -between neighboring blocks.
    12. + between neighboring blocks.
    13. The reassociation pass (which turns (1+X+3) into (X+1+3) among other -things), is more aggressive an intelligent.
    14. - +things), is more aggressive and intelligent. + +
    15. The -prune-eh pass now detects no-return functions in addition to the + no-unwind functions it did before.
    16. + +
    17. The -globalsmodref alias analysis generates more precise results in some + cases.
    + + +
    +Code Generator Improvements in LLVM 1.5 +
    + +
    +
      +
    1. The code generator now can provide and use information about commutative + two-address instructions when performing register allocation.
    2. + +
    3. The code generator now tracks function live-in registers explicitly, + instead of requiring the target to generate 'implicit defs' at the + entry to a function.
    4. + +
    5. The code generator can lower integer division by a constant to + multiplication by a magic constant and multiplication by a constant into + shift/add sequences.
    6. + +
    7. The code generator compiles fabs/fneg/sin/cos/sqrt to assembly instructions + when possible.
    8. + +
    9. The PowerPC backend generates better code in many cases, making use of + FMA instructions and the recording ("dot") forms of various PowerPC + instructions.
    10. +
    +
    + +
    Significant Bugs Fixed in LLVM 1.5 @@ -266,7 +303,7 @@
  • [instcombine] miscompilation of setcc or setcc in one case
  • Transition code for LLVM 1.0 style varargs was removed from the .ll file - parser. LLVM 1.0 bytecode files are still supported.
  • + parser. LLVM 1.0 bytecode files are still supported.

    Code Generator Bugs:

    @@ -277,6 +314,7 @@ respect 'volatile'.
  • The JIT sometimes miscompiled globals and constant pool entries for 64-bit integer constants on 32-bit hosts.
  • +
  • The C backend should no longer produce code that crashes ICC 8.1.
  • Bugs in the C/C++ front-end:

    @@ -786,7 +824,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2005/05/16 15:37:19 $ + Last modified: $Date: 2005/05/16 16:56:09 $ From lattner at cs.uiuc.edu Mon May 16 12:06:46 2005 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 16 May 2005 12:06:46 -0500 Subject: [llvm-commits] CVS: llvm/docs/ReleaseNotes.html Message-ID: <200505161706.j4GH6klE016061@apoc.cs.uiuc.edu> Changes in directory llvm/docs: ReleaseNotes.html updated: 1.325 -> 1.326 --- Log message: more edits --- Diffs of the changes: (+30 -29) ReleaseNotes.html | 59 +++++++++++++++++++++++++++--------------------------- 1 files changed, 30 insertions(+), 29 deletions(-) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.325 llvm/docs/ReleaseNotes.html:1.326 --- llvm/docs/ReleaseNotes.html:1.325 Mon May 16 11:56:09 2005 +++ llvm/docs/ReleaseNotes.html Mon May 16 12:06:29 2005 @@ -625,12 +625,6 @@
  • The C++ front-end inherits all problems afflicting the C front-end.
  • -
  • IA-64 specific: The C++ front-end does not use IA64 ABI compliant layout of v-tables. -In particular, it just stores function pointers instead of function -descriptors in the vtable. This bug prevents mixing C++ code compiled with -LLVM with C++ objects compiled by other C++ compilers.
  • -
    @@ -672,27 +666,35 @@
    - Known problems with the X86 back-end + Known problems with the C back-end
    - Known problems with the SparcV9 back-end + Known problems with the X86 back-end
    @@ -712,22 +714,14 @@
    - Known problems with the C back-end + Known problems with the SparcV9 back-end
    @@ -741,9 +735,10 @@ @@ -824,7 +825,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2005/05/16 16:56:09 $ + Last modified: $Date: 2005/05/16 17:06:29 $ From lattner at cs.uiuc.edu Mon May 16 12:13:27 2005 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon, 16 May 2005 12:13:27 -0500 Subject: [llvm-commits] CVS: llvm/docs/ReleaseNotes.html Message-ID: <200505161713.j4GHDRrG016099@apoc.cs.uiuc.edu> Changes in directory llvm/docs: ReleaseNotes.html updated: 1.326 -> 1.327 --- Log message: more minor edits --- Diffs of the changes: (+6 -5) ReleaseNotes.html | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.326 llvm/docs/ReleaseNotes.html:1.327 --- llvm/docs/ReleaseNotes.html:1.326 Mon May 16 12:06:29 2005 +++ llvm/docs/ReleaseNotes.html Mon May 16 12:13:10 2005 @@ -801,16 +801,17 @@
    -

    A wide variety of additional information is available on the LLVM web page, -including mailing lists and -publications describing algorithms and +

    A wide variety of additional information is available on the LLVM web page, including documentation and publications describing algorithms and components implemented in LLVM. The web page also contains versions of the API documentation which is up-to-date with the CVS version of the source code. You can access versions of these documents specific to this release by going into the "llvm/doc/" directory in the LLVM tree.

    If you have any questions or comments about LLVM, please feel free to contact -us via the mailing +us via the mailing lists.

    @@ -825,7 +826,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2005/05/16 17:06:29 $ + Last modified: $Date: 2005/05/16 17:13:10 $ From reid at x10sys.com Mon May 16 13:13:09 2005 From: reid at x10sys.com (Reid Spencer) Date: Mon, 16 May 2005 13:13:09 -0500 Subject: [llvm-commits] CVS: llvm/docs/Makefile Message-ID: <200505161813.NAA30862@zion.cs.uiuc.edu> Changes in directory llvm/docs: Makefile updated: 1.8 -> 1.9 --- Log message: Add the ability to generate the User LOC page via the userloc.pl script. --- Diffs of the changes: (+5 -0) Makefile | 5 +++++ 1 files changed, 5 insertions(+) Index: llvm/docs/Makefile diff -u llvm/docs/Makefile:1.8 llvm/docs/Makefile:1.9 --- llvm/docs/Makefile:1.8 Thu Feb 24 15:28:08 2005 +++ llvm/docs/Makefile Mon May 16 13:12:58 2005 @@ -64,3 +64,8 @@ $(Verb) $(TAR) cf $(PROJ_OBJ_DIR)/doxygen.tar doxygen $(Verb) $(GZIP) $(PROJ_OBJ_DIR)/doxygen.tar +userloc.html: + $(Echo) Making User LOC Table + $(Verb) cd $(LLVM_SRC_ROOT) ; ./utils/userloc.pl -details -recurse \ + -html lib include tools runtime utils examples autoconf test > userloc.html + From reid at x10sys.com Mon May 16 13:26:58 2005 From: reid at x10sys.com (Reid Spencer) Date: Mon, 16 May 2005 13:26:58 -0500 Subject: [llvm-commits] CVS: llvm/utils/userloc.html Message-ID: <200505161826.NAA31198@zion.cs.uiuc.edu> Changes in directory llvm/utils: userloc.html added (r1.1) --- Log message: Add a script to generate information about the number of lines of code a user has checked in (not necessarily authored) based on cvs annotate. --- Diffs of the changes: (+21 -0) userloc.html | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+) Index: llvm/utils/userloc.html diff -c /dev/null llvm/utils/userloc.html:1.1 *** /dev/null Mon May 16 13:26:57 2005 --- llvm/utils/userloc.html Mon May 16 13:26:47 2005 *************** *** 0 **** --- 1,21 ---- + + + + LLVM LOC Based On CVS Annotation + + +
    LLVM LOC Based On CVS Annotation
    +

    This document shows the total lines of code per user in each + LLVM directory. Lines of code are attributed by the user that last + committed the line. This does not necessarily reflect authorship.

    + + + + + + + + + + +
    Directorybrukmanhldnbrndreidfoolattner
    fpcmp 2 ( 3.5)  53 (93.0)  2 ( 3.5) 
    vim 131 (70.4)  1 ( 0.5)  47 (25.3)  7 ( 3.8) 
    Total 133 (54.7)  1 ( 0.4)  47 (19.3)  60 (24.7)  2 ( 0.8) 
    From reid at x10sys.com Mon May 16 13:29:24 2005 From: reid at x10sys.com (Reid Spencer) Date: Mon, 16 May 2005 13:29:24 -0500 Subject: [llvm-commits] CVS: llvm/docs/Makefile Message-ID: <200505161829.NAA31606@zion.cs.uiuc.edu> Changes in directory llvm/docs: Makefile updated: 1.9 -> 1.10 --- Log message: Adjust the dependencies and generate the output to docs/userloc.html so that it can properly link to the CSS stylesheet and images. --- Diffs of the changes: (+4 -2) Makefile | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) Index: llvm/docs/Makefile diff -u llvm/docs/Makefile:1.9 llvm/docs/Makefile:1.10 --- llvm/docs/Makefile:1.9 Mon May 16 13:12:58 2005 +++ llvm/docs/Makefile Mon May 16 13:29:13 2005 @@ -64,8 +64,10 @@ $(Verb) $(TAR) cf $(PROJ_OBJ_DIR)/doxygen.tar doxygen $(Verb) $(GZIP) $(PROJ_OBJ_DIR)/doxygen.tar -userloc.html: +userloc: $(LLVM_SRC_ROOT)/docs/userloc.html + +$(LLVM_SRC_ROOT)/docs/userloc.html: $(Echo) Making User LOC Table $(Verb) cd $(LLVM_SRC_ROOT) ; ./utils/userloc.pl -details -recurse \ - -html lib include tools runtime utils examples autoconf test > userloc.html + -html lib include tools runtime utils examples autoconf test > docs/userloc.html From reid at x10sys.com Mon May 16 13:30:49 2005 From: reid at x10sys.com (Reid Spencer) Date: Mon, 16 May 2005 13:30:49 -0500 Subject: [llvm-commits] CVS: llvm/utils/userloc.pl userloc.html Message-ID: <200505161830.NAA31821@zion.cs.uiuc.edu> Changes in directory llvm/utils: userloc.pl added (r1.1) userloc.html (r1.1) removed --- Log message: Sometimes tab completion is *not* your friend. Added the wrong file, by accident so now I'm correcting it. The script is userloc.pl not userloc.html --- Diffs of the changes: (+257 -0) userloc.pl | 257 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 257 insertions(+) Index: llvm/utils/userloc.pl diff -c /dev/null llvm/utils/userloc.pl:1.1 *** /dev/null Mon May 16 13:30:48 2005 --- llvm/utils/userloc.pl Mon May 16 13:30:38 2005 *************** *** 0 **** --- 1,257 ---- + #!/usr/bin/perl -w + # + # Program: userloc.pl + # + # Synopsis: This program uses "cvs annotate" to get a summary of how many lines + # of code the various developres are responsible for. It takes one + # argument, the directory to process. If the argument is not specified + # then the cwd is used. The directory must be an LLVM tree checked out + # from cvs. + # + # Syntax: userloc.pl [-details|-recurse|-tag=tag|-html... ... + # + # Options: + # -details + # Print detailed per-directory information. + # -recurse + # Recurse through sub directories. Without this, only the + # specified directory is examined + # -tag=tag + # Use "tag" to select the revision (as per cvs -r option) + # -html + # Generate HTML output instead of text output + + die "Usage userloc.pl [-details|-recurse|-tag=tag|-html] ..." + if ($#ARGV < 0); + + my $tag = ""; + my $details = 0; + my $recurse = 0; + my $html = 0; + while ( substr($ARGV[0],0,1) eq '-' ) + { + if ($ARGV[0] eq "-details") + { + $details = 1 ; + } + elsif ($ARGV[0] eq "-recurse") + { + $recurse = 1; + } + elsif ($ARGV[0] =~ /-tag=.*/) + { + $tag = $ARGV[0]; + $tag =~ s#-tag=(.*)#$1#; + } + elsif ($ARGV[0] eq "-html") + { + $html = 1; + } + else + { + die "Invalid option: $ARGV[0]"; + } + shift; + } + + die "Usage userloc.pl [-details|-recurse|-tag=tag|-html] ..." + if ($#ARGV < 0); + + my %Stats; + my %StatsDetails; + + sub ValidateFile + { + my $f = $_[0]; + my $d = $_[1]; + + return 0 if ( "$f" eq "configure"); + if ( $d =~ ".*autoconf.*") + { + return 1 if ($f eq "configure.ac"); + return 1 if ($f eq "AutoRegen.sh"); + return 0; + } + + return 1; + } + + sub GetCVSFiles + { + my $d = $_[0]; + my $files =""; + open STATUS, "cvs -nfz6 status $d -l 2>/dev/null |" + || die "Can't 'cvs status'"; + while ( defined($line = ) ) + { + if ( $line =~ /^File:.*/ ) + { + chomp($line); + $line =~ s#^File: ([A-Za-z0-9._-]*)[ \t]*Status:.*#$1#; + $files = "$files $d/$line" if (ValidateFile($line,$d)); + } + + } + return $files; + } + + my $annotate = "cvs annotate -lf "; + if (length($tag) > 0) + { + $annotate = $annotate . " -r " . $tag; + } + + sub ScanDir + { + my $Dir = $_[0]; + my $files = GetCVSFiles($Dir); + + open (DATA,"$annotate $files 2>/dev/null |") + || die "Can't read cvs annotation data"; + + my %st; + while ( defined($line = ) ) + { + if ($line =~ /^[0-9.]*[ \t]*\(/) + { + $line =~ s#^[0-9.]*[ \t]*\(([a-zA-Z0-9_.-]*).*#$1#; + chomp($line); + $st{$line}++; + $Stats{$line}++; + } + } + + $StatsDetails{$Dir} = { %st }; + + close DATA; + } + + sub ValidateDirectory + { + my $d = $_[0]; + return 0 if ($d =~ /.*CVS.*/); + return 0 if ($d =~ /.*Debug.*/); + return 0 if ($d =~ /.*Release.*/); + return 0 if ($d =~ /.*Profile.*/); + return 0 if ($d =~ /.*utils\/Burg.*/); + return 0 if ($d =~ /.*docs\/CommandGuide\/html.*/); + return 0 if ($d =~ /.*docs\/CommandGuide\/man.*/); + return 0 if ($d =~ /.*docs\/CommandGuide\/ps.*/); + return 0 if ($d =~ /.*docs\/CommandGuide\/man.*/); + return 0 if ($d =~ /.*docs\/HistoricalNotes.*/); + return 0 if ($d =~ /.*docs\/img.*/); + return 0 if ($d =~ /.*bzip2.*/); + return 1 if ($d =~ /.*projects\/Stacker.*/); + return 1 if ($d =~ /.*projects\/sample.*/); + return 0 if ($d =~ /.*projects\/llvm-.*/); + return 0 if ($d =~ /.*win32.*/); + return 1; + } + + my $RowCount = 0; + sub printStats + { + my $dir = $_[0]; + my $hash = $_[1]; + my $user; + my $total = 0; + + if ($RowCount % 10 == 0) + { + print " Directory\n"; + foreach $user (keys %Stats) + { + print "",$user,"\n"; + } + } + + $RowCount++; + + foreach $user (keys %{$hash}) { $total += $hash->{$user}; } + + if ($html) + { print "",$dir,""; } + else + { print $dir,"\n"; } + + foreach $user ( sort keys %Stats ) + { + my $v = $hash->{$user}; + if (defined($v)) + { + if ($html) + { + printf "%d
    (%2.1f%%)", $v, + (100.0/$total)*$v; + } + else + { + printf "%8d (%4.1f%%): %s\n", $v, (100.0/$total)*$v, $user; + } + } + elsif ($html) + { + print "- "; + } + } + print "\n" if ($html); + } + + my @ALLDIRS = @ARGV; + + if ($recurse) + { + $Dirs = join(" ", @ARGV); + $Dirs = `find $Dirs -type d \! -name CVS -print`; + @ALLDIRS = split(' ',$Dirs); + } + + if ($html) + { + print "\n"; + print "\n\n"; + print " LLVM LOC Based On CVS Annotation\n"; + print " \n"; + print "\n"; + print "
    LLVM LOC Based On CVS Annotation
    \n"; + print "

    This document shows the total lines of code per user in each\n"; + print "LLVM directory. Lines of code are attributed by the user that last\n"; + print "committed the line. This does not necessarily reflect authorship.

    \n"; + print "

    The following directories were skipped:

    \n"; + print "
      \n"; + } + + for $Dir (@ALLDIRS) + { + if ( -d "$Dir" && -d "$Dir/CVS" && ValidateDirectory($Dir) ) + { + ScanDir($Dir); + } + elsif ($html) + { + print "
    1. $Dir
    2. \n"; + } + } + + if ($html) + { + print "
    \n"; + print "\n"; + } + + if ($details) + { + foreach $dir (sort keys %StatsDetails) + { + printStats($dir,$StatsDetails{$dir}); + } + } + + printStats("Total",\%Stats); + + + if ($html) + { + print "
    \n"; + } + From reid at x10sys.com Mon May 16 13:53:08 2005 From: reid at x10sys.com (Reid Spencer) Date: Mon, 16 May 2005 13:53:08 -0500 Subject: [llvm-commits] CVS: llvm/utils/userloc.pl Message-ID: <200505161853.NAA00696@zion.cs.uiuc.edu> Changes in directory llvm/utils: userloc.pl updated: 1.1 -> 1.2 --- Log message: Fix a brain blunder in the HTML output. --- Diffs of the changes: (+4 -3) userloc.pl | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) Index: llvm/utils/userloc.pl diff -u llvm/utils/userloc.pl:1.1 llvm/utils/userloc.pl:1.2 --- llvm/utils/userloc.pl:1.1 Mon May 16 13:30:38 2005 +++ llvm/utils/userloc.pl Mon May 16 13:52:57 2005 @@ -161,19 +161,20 @@ print " Directory\n"; foreach $user (keys %Stats) { - print "",$user,"\n"; + print "",$user,"\n"; } + print "\n"; } $RowCount++; - foreach $user (keys %{$hash}) { $total += $hash->{$user}; } - if ($html) { print "",$dir,""; } else { print $dir,"\n"; } + foreach $user (keys %{$hash}) { $total += $hash->{$user}; } + foreach $user ( sort keys %Stats ) { my $v = $hash->{$user}; From criswell at cs.uiuc.edu Mon May 16 14:30:38 2005 From: criswell at cs.uiuc.edu (John Criswell) Date: Mon, 16 May 2005 14:30:38 -0500 Subject: [llvm-commits] [release_15] CVS: llvm/configure Message-ID: <200505161930.OAA26299@choi.cs.uiuc.edu> Changes in directory llvm: configure updated: 1.186 -> 1.186.2.1 --- Log message: Updated the version to 1.5. --- Diffs of the changes: (+9 -9) configure | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-) Index: llvm/configure diff -u llvm/configure:1.186 llvm/configure:1.186.2.1 --- llvm/configure:1.186 Mon May 16 11:33:34 2005 +++ llvm/configure Mon May 16 14:30:19 2005 @@ -1,6 +1,6 @@ #! /bin/sh # 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 . # @@ -425,8 +425,8 @@ # Identity of this package. PACKAGE_NAME='llvm' PACKAGE_TARNAME='-llvm-' -PACKAGE_VERSION='1.5cvs' -PACKAGE_STRING='llvm 1.5cvs' +PACKAGE_VERSION='1.5' +PACKAGE_STRING='llvm 1.5' PACKAGE_BUGREPORT='llvmbugs at cs.uiuc.edu' ac_unique_file="lib/VMCore/Module.cpp" @@ -964,7 +964,7 @@ # 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. 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]... @@ -1026,7 +1026,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of llvm 1.5cvs:";; + short | recursive ) echo "Configuration of llvm 1.5:";; esac cat <<\_ACEOF @@ -1172,7 +1172,7 @@ test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -llvm configure 1.5cvs +llvm configure 1.5 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -1188,7 +1188,7 @@ This file contains any messages produced by compilers while 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 $ $0 $@ @@ -30698,7 +30698,7 @@ } >&5 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 CONFIG_FILES = $CONFIG_FILES @@ -30761,7 +30761,7 @@ cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -llvm config.status 1.5cvs +llvm config.status 1.5 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" From criswell at cs.uiuc.edu Mon May 16 14:30:38 2005 From: criswell at cs.uiuc.edu (John Criswell) Date: Mon, 16 May 2005 14:30:38 -0500 Subject: [llvm-commits] [release_15] CVS: llvm/autoconf/configure.ac Message-ID: <200505161930.OAA26300@choi.cs.uiuc.edu> Changes in directory llvm/autoconf: configure.ac updated: 1.181 -> 1.181.2.1 --- Log message: Updated the version to 1.5. --- Diffs of the changes: (+1 -1) configure.ac | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/autoconf/configure.ac diff -u llvm/autoconf/configure.ac:1.181 llvm/autoconf/configure.ac:1.181.2.1 --- llvm/autoconf/configure.ac:1.181 Mon May 16 00:39:00 2005 +++ llvm/autoconf/configure.ac Mon May 16 14:30:22 2005 @@ -31,7 +31,7 @@ dnl===-----------------------------------------------------------------------=== dnl Initialize autoconf and define the package name, version number and dnl email address for reporting bugs. -AC_INIT([[llvm]],[[1.5cvs]],[llvmbugs at cs.uiuc.edu]) +AC_INIT([[llvm]],[[1.5]],[llvmbugs at cs.uiuc.edu]) dnl Provide a copyright substitution and ensure the copyright notice is included dnl in the output of --version option of the generated configure script. From reid at x10sys.com Mon May 16 14:33:34 2005 From: reid at x10sys.com (Reid Spencer) Date: Mon, 16 May 2005 14:33:34 -0500 Subject: [llvm-commits] CVS: llvm/utils/userloc.pl Message-ID: <200505161933.OAA02286@zion.cs.uiuc.edu> Changes in directory llvm/utils: userloc.pl updated: 1.2 -> 1.3 --- Log message: It would help if the headings were sorted properly. --- Diffs of the changes: (+1 -1) userloc.pl | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/utils/userloc.pl diff -u llvm/utils/userloc.pl:1.2 llvm/utils/userloc.pl:1.3 --- llvm/utils/userloc.pl:1.2 Mon May 16 13:52:57 2005 +++ llvm/utils/userloc.pl Mon May 16 14:33:21 2005 @@ -159,7 +159,7 @@ if ($RowCount % 10 == 0) { print " Directory\n"; - foreach $user (keys %Stats) + foreach $user (sort keys %Stats) { print "",$user,"\n"; } From criswell at cs.uiuc.edu Mon May 16 14:33:42 2005 From: criswell at cs.uiuc.edu (John Criswell) Date: Mon, 16 May 2005 14:33:42 -0500 Subject: [llvm-commits] CVS: llvm-www/releases/1.5/ Message-ID: <200505161933.OAA26395@choi.cs.uiuc.edu> Changes in directory llvm-www/releases/1.5: --- Log message: Directory /home/vadve/shared/PublicCVS/llvm-www/releases/1.5 added to the repository --- Diffs of the changes: (+0 -0) 0 files changed From criswell at cs.uiuc.edu Mon May 16 14:35:19 2005 From: criswell at cs.uiuc.edu (John Criswell) Date: Mon, 16 May 2005 14:35:19 -0500 Subject: [llvm-commits] CVS: llvm-www/releases/1.5/LICENSE.TXT index.html Message-ID: <200505161935.OAA26428@choi.cs.uiuc.edu> Changes in directory llvm-www/releases/1.5: LICENSE.TXT added (r1.1) index.html added (r1.1) --- Log message: Add the index page and the license file for LLVM 1.5. And so, it begins... --- Diffs of the changes: (+79 -0) LICENSE.TXT | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 7 +++++ 2 files changed, 79 insertions(+) Index: llvm-www/releases/1.5/LICENSE.TXT diff -c /dev/null llvm-www/releases/1.5/LICENSE.TXT:1.1 *** /dev/null Mon May 16 14:35:12 2005 --- llvm-www/releases/1.5/LICENSE.TXT Mon May 16 14:35:02 2005 *************** *** 0 **** --- 1,72 ---- + ============================================================================== + LLVM Release License + ============================================================================== + University of Illinois/NCSA + Open Source License + + Copyright (c) 2003, 2004, 2005 University of Illinois at Urbana-Champaign. + All rights reserved. + + Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.cs.uiuc.edu + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal with + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE + SOFTWARE. + + ============================================================================== + Copyrights and Licenses for Third Party Software Distributed with LLVM: + ============================================================================== + The LLVM software contains code written by third parties. Such software will + have its own individual LICENSE.TXT file in the directory in which it appears. + This file will describe the copyrights, license, and restrictions which apply + to that code. + + The disclaimer of warranty in the University of Illinois Open Source License + applies to all code in the LLVM Distribution, and nothing in any of the + other licenses gives permission to use the names of the LLVM Team or the + University of Illinois to endorse or promote products derived from this + Software. + + The following pieces of software have additional or alternate copyrights, + licenses, and/or restrictions: + + Program Directory + ------- --------- + System Library llvm/lib/System + Compiler Driver llvm/tools/llvmc + PowerPC Backend llvm/lib/Target/PowerPC + bzip2 llvm/lib/Support/bzip2/LICENSE + Autoconf llvm/autoconf + llvm/projects/ModuleMaker/autoconf + llvm/projects/sample/autoconf + Burg llvm/utils/Burg + GNU Libc llvm/runtime/GCCLibraries/libc Index: llvm-www/releases/1.5/index.html diff -c /dev/null llvm-www/releases/1.5/index.html:1.1 *** /dev/null Mon May 16 14:35:19 2005 --- llvm-www/releases/1.5/index.html Mon May 16 14:35:02 2005 *************** *** 0 **** --- 1,7 ---- + + + + + + + From brukman at cs.uiuc.edu Mon May 16 21:12:43 2005 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Mon, 16 May 2005 21:12:43 -0500 Subject: [llvm-commits] CVS: llvm/docs/WritingAnLLVMBackend.html Message-ID: <200505170212.VAA04653@zion.cs.uiuc.edu> Changes in directory llvm/docs: WritingAnLLVMBackend.html updated: 1.4 -> 1.5 --- Log message: Add link to debugging code generators with bugpoint --- Diffs of the changes: (+7 -4) WritingAnLLVMBackend.html | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) Index: llvm/docs/WritingAnLLVMBackend.html diff -u llvm/docs/WritingAnLLVMBackend.html:1.4 llvm/docs/WritingAnLLVMBackend.html:1.5 --- llvm/docs/WritingAnLLVMBackend.html:1.4 Mon Dec 27 13:05:16 2004 +++ llvm/docs/WritingAnLLVMBackend.html Mon May 16 21:12:32 2005 @@ -229,10 +229,13 @@
    • Code generator - describes some of the classes in code generation at a high level, but - it is not (yet) complete.
    • + it is not (yet) complete
    • TableGen fundamentals - - describes how to use TableGen to describe your target information succinctly -
    • + describes how to use TableGen to describe your target information + succinctly +
    • Debugging code generation with + bugpoint - shows bugpoint usage scenarios to simplify backend + development
    @@ -249,7 +252,7 @@ Misha Brukman
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/12/27 19:05:16 $ + Last modified: $Date: 2005/05/17 02:12:32 $ From brukman at cs.uiuc.edu Mon May 16 21:27:41 2005 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Mon, 16 May 2005 21:27:41 -0500 Subject: [llvm-commits] CVS: llvm/docs/WritingAnLLVMBackend.html Message-ID: <200505170227.VAA04863@zion.cs.uiuc.edu> Changes in directory llvm/docs: WritingAnLLVMBackend.html updated: 1.5 -> 1.6 --- Log message: Recommend writing new instruction selectors using pattern-based mechanisms --- Diffs of the changes: (+9 -10) WritingAnLLVMBackend.html | 19 +++++++++---------- 1 files changed, 9 insertions(+), 10 deletions(-) Index: llvm/docs/WritingAnLLVMBackend.html diff -u llvm/docs/WritingAnLLVMBackend.html:1.5 llvm/docs/WritingAnLLVMBackend.html:1.6 --- llvm/docs/WritingAnLLVMBackend.html:1.5 Mon May 16 21:12:32 2005 +++ llvm/docs/WritingAnLLVMBackend.html Mon May 16 21:27:30 2005 @@ -109,15 +109,14 @@ step can be almost automated. -

    Now, for static code generation you also need to write an instruction -selector for your platform: see lib/Target/*/*ISelSimple.cpp which -is no longer "simple" but it gives you the idea: you have to be able to create -MachineInstrs for any given LLVM instruction using the InstVisitor -pattern, and produce a MachineFunction with -MachineBasicBlocks full of MachineInstrs for a -corresponding LLVM Function. Creating an instruction selector is perhaps the -most time-consuming part of creating a back-end.

    +

    You also need to write an instruction selector for your platform. The +recommended method is the pattern-matching instruction selector. You can see +examples in other targets: lib/Target/*/*ISelPattern.cpp. The former +method for writing instruction selectors (not recommended) is +encapsulated in lib/Target/*/*ISelSimple.cpp, which are +InstVisitor-based translators, generating code for an LLVM instruction +at a time. Creating an instruction selector is perhaps the most time-consuming +part of creating a back-end.

    To create a JIT for your platform:

    @@ -252,7 +251,7 @@ Misha Brukman
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2005/05/17 02:12:32 $ + Last modified: $Date: 2005/05/17 02:27:30 $ From brukman at cs.uiuc.edu Mon May 16 21:33:14 2005 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Mon, 16 May 2005 21:33:14 -0500 Subject: [llvm-commits] CVS: llvm/docs/WritingAnLLVMBackend.html Message-ID: <200505170233.VAA05048@zion.cs.uiuc.edu> Changes in directory llvm/docs: WritingAnLLVMBackend.html updated: 1.6 -> 1.7 --- Log message: * Add a link to the pattern-matching codegen docs * Tersify wording --- Diffs of the changes: (+10 -8) WritingAnLLVMBackend.html | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-) Index: llvm/docs/WritingAnLLVMBackend.html diff -u llvm/docs/WritingAnLLVMBackend.html:1.6 llvm/docs/WritingAnLLVMBackend.html:1.7 --- llvm/docs/WritingAnLLVMBackend.html:1.6 Mon May 16 21:27:30 2005 +++ llvm/docs/WritingAnLLVMBackend.html Mon May 16 21:33:03 2005 @@ -110,13 +110,15 @@

    You also need to write an instruction selector for your platform. The -recommended method is the pattern-matching instruction selector. You can see -examples in other targets: lib/Target/*/*ISelPattern.cpp. The former -method for writing instruction selectors (not recommended) is -encapsulated in lib/Target/*/*ISelSimple.cpp, which are -InstVisitor-based translators, generating code for an LLVM instruction -at a time. Creating an instruction selector is perhaps the most time-consuming -part of creating a back-end.

    +recommended method is the pattern-matching instruction selector, +examples of which you can see in other targets: +lib/Target/*/*ISelPattern.cpp. The former method for writing +instruction selectors (not recommended for new targets) is evident in +lib/Target/*/*ISelSimple.cpp, which are InstVisitor-based +translators, generating code for an LLVM instruction at a time. Creating an +instruction selector is perhaps the most time-consuming part of creating a +back-end.

    To create a JIT for your platform:

    @@ -251,7 +253,7 @@ Misha Brukman
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2005/05/17 02:27:30 $ + Last modified: $Date: 2005/05/17 02:33:03 $ From reid at x10sys.com Mon May 16 21:47:39 2005 From: reid at x10sys.com (Reid Spencer) Date: Mon, 16 May 2005 21:47:39 -0500 Subject: [llvm-commits] CVS: llvm/docs/ReleaseNotes.html Message-ID: <200505170247.VAA05110@zion.cs.uiuc.edu> Changes in directory llvm/docs: ReleaseNotes.html updated: 1.327 -> 1.328 --- Log message: Fix a few grammaros. --- Diffs of the changes: (+6 -6) ReleaseNotes.html | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.327 llvm/docs/ReleaseNotes.html:1.328 --- llvm/docs/ReleaseNotes.html:1.327 Mon May 16 12:13:10 2005 +++ llvm/docs/ReleaseNotes.html Mon May 16 21:47:27 2005 @@ -148,7 +148,7 @@ could be added if desired.

    -

    In order for a front-end to get a guaranteed tail call, it must mark +

    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 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 @@ -217,7 +217,7 @@ hitting swap during optimized builds.

  • The LLVM Transformation Visualizer (llvm-tv) project has been updated to - work with LLVM CVS.
  • + work with LLVM 1.5.
  • Nightly tester output is now archived on the llvm-testresults mailing list.
  • @@ -243,7 +243,7 @@
  • Loops with trip counts based on array pointer comparisons (e.g. "for (i = 0; &A[i] != &A[n]; ++i) ...") are optimized better than before, -which primarily helps iterator-intensive C++ codes.
  • +which primarily helps iterator-intensive C++ code.
  • The optimizer now eliminates simple cases where redundant conditions exist between neighboring blocks.
  • @@ -353,8 +353,8 @@

    LLVM is known to work on the following platforms: