|
83 | 83 | This release includes new native code generators for <a
|
84 | 84 | href="#alpha-be">Alpha</a>, <a href="#ia64-be">IA-64</a>, and <a
|
85 | 85 | href="#sparcv8">SPARC-V8</a> (32-bit SPARC). These code generators are still
|
86 |
| -beta quality, but are progressing rapidly. |
| 86 | +beta quality, but are progressing rapidly. The Alpha backend is implemented |
| 87 | +with an eye towards being compatible with the widely used SimpleScalar |
| 88 | +simulator. |
87 | 89 | </p>
|
88 | 90 | </div>
|
89 | 91 |
|
|
106 | 108 | </div>
|
107 | 109 |
|
108 | 110 | <!--_________________________________________________________________________-->
|
109 |
| -<div class="doc_subsubsection"><a name="customccs">New Support For Custom |
| 111 | +<div class="doc_subsubsection"><a name="customccs">New Support for Per-Function |
110 | 112 | Calling Conventions</a></div>
|
111 | 113 |
|
112 | 114 | <div class="doc_text">
|
113 |
| -<p>LLVM 1.5 adds supports for <a href="LangRef.html#callingconv">custom and |
114 |
| -target-specific calling conventions</a>. Traditionally, the LLVM code |
115 |
| -generators match the native C calling conventions for a target. This is |
116 |
| -important for compatibility, but is not very flexible. This release allows |
117 |
| -custom calling conventions to be established for functions, and defines three |
118 |
| -target-independent conventions (C call, fast call, and cold call) which may be |
119 |
| -supported by code generators. When possible, the LLVM optimizer promotes C |
| 115 | +<p>LLVM 1.5 adds supports for <a href="LangRef.html#callingconv">per-function |
| 116 | +calling conventions</a>. Traditionally, the LLVM code generators match the |
| 117 | +native C calling conventions for a target. This is important for compatibility, |
| 118 | +but is not very flexible. This release allows custom calling conventions to be |
| 119 | +established for functions, and defines three target-independent conventions (<a |
| 120 | +href="LangRef.html#callingconv">C call, fast call, and cold call</a>) which may |
| 121 | +be supported by code generators. When possible, the LLVM optimizer promotes C |
120 | 122 | functions to use the "fastcc" convention, allowing the use of more efficient
|
121 | 123 | calling sequences (e.g., parameters are passed in registers in the X86 target).
|
122 | 124 | </p>
|
|
129 | 131 |
|
130 | 132 | <!--_________________________________________________________________________-->
|
131 | 133 | <div class="doc_subsubsection"><a name="tailcalls">New Support for
|
132 |
| -"Proper Tail Calls"</a></div> |
| 134 | +Proper Tail Calls</a></div> |
133 | 135 |
|
134 | 136 | <div class="doc_text">
|
135 | 137 | <p>The release now includes support for <a
|
|
208 | 210 | counting</a> and llvm-gcc now implements the GCC
|
209 | 211 | <tt>__builtin_popcount</tt>, <tt>__builtin_ctz</tt>, and
|
210 | 212 | <tt>__builtin_clz</tt> builtins.</li>
|
211 |
| - <li>LLVM now builds on HP-UX with the HP aCC Compiler.</li> |
| 213 | + <li>LLVM now mostly builds on HP-UX with the HP aCC Compiler.</li> |
212 | 214 | <li>The LLVM X86 backend can now emit Cygwin-compatible .s files.</li>
|
213 | 215 | <li>LLVM now includes workarounds in the code generator generator which
|
214 | 216 | reduces the likelyhood of <a href="http://llvm.cs.uiuc.edu/PR448">GCC
|
|
240 | 242 | <li>The code generator now uses information about takes advantage of commutative
|
241 | 243 | two-address instructions when performing register allocation.</li>
|
242 | 244 |
|
| 245 | +<li>The optimizer now eliminates simple cases where redundant conditions exist |
| 246 | +between neighboring blocks.</li> |
| 247 | + |
| 248 | +<li>The reassociation pass (which turns (1+X+3) into (X+1+3) among other |
| 249 | +things), is more aggressive an intelligent.</li> |
243 | 250 |
|
244 | 251 | </ol>
|
245 | 252 | </div>
|
|
265 | 272 | <p>Code Generator Bugs:</p>
|
266 | 273 | <ol>
|
267 | 274 | <li><a href="http://llvm.cs.uiuc.edu/PR490">[cbackend] Logical constant
|
268 |
| - expressions (and/or/xor) not implemented</a></li> |
| 275 | + expressions (and/or/xor) not implemented</a>.</li> |
269 | 276 | <li><a href="http://llvm.cs.uiuc.edu/PR511">[cbackend] C backend does not
|
270 |
| - respect 'volatile'</a></li> |
| 277 | + respect 'volatile'</a>.</li> |
| 278 | + <li>The JIT sometimes miscompiled globals and constant pool entries for |
| 279 | + 64-bit integer constants on 32-bit hosts.</li> |
271 | 280 | </ol>
|
272 | 281 |
|
273 | 282 | <p>Bugs in the C/C++ front-end:</p>
|
|
0 commit comments