forked from OSchip/llvm-project
parent
78c7e34485
commit
269ef9f6f0
|
@ -321,7 +321,8 @@ ELF MC support: on by default in clang. There are still known missing features
|
||||||
for human written assembly.
|
for human written assembly.
|
||||||
|
|
||||||
X86: Reimplemented all of MMX to introduce a new LLVM IR x86_mmx type. Now
|
X86: Reimplemented all of MMX to introduce a new LLVM IR x86_mmx type. Now
|
||||||
random types like <2 x i32> are not iseld to mmx without emms.
|
random types like <2 x i32> are not iseld to mmx without emms. The
|
||||||
|
-disable-mmx flag is gone now.
|
||||||
|
|
||||||
Some basic <a href="CodeGenerator.html#mc">internals documentation</a> for MC.
|
Some basic <a href="CodeGenerator.html#mc">internals documentation</a> for MC.
|
||||||
|
|
||||||
|
@ -330,18 +331,23 @@ MC Assembler support for .file and .loc.
|
||||||
|
|
||||||
inline asm multiple alternative constraint support.
|
inline asm multiple alternative constraint support.
|
||||||
|
|
||||||
LoopIdiom: memset/memcpy formation
|
LoopIdiom: memset/memcpy formation. Build with -ffreestanding or -fno-builtin
|
||||||
|
if your memcpy is being compiled into infinite recursion.
|
||||||
|
|
||||||
|
|
||||||
|
TargetLibraryInfo
|
||||||
|
|
||||||
X86 support for FS/GS relative loads and stores using address space 256/257 are
|
X86 support for FS/GS relative loads and stores using address space 256/257 are
|
||||||
reliable now.
|
reliable now.
|
||||||
|
|
||||||
ARM: New code placement pass.
|
ARM: New code placement pass.
|
||||||
|
|
||||||
|
unnamed_addr + PR8927
|
||||||
|
|
||||||
PointerTracking has been removed from mainline, moved to ClamAV.
|
PointerTracking has been removed from mainline, moved to ClamAV.
|
||||||
|
|
||||||
EarlyCSE pass.
|
EarlyCSE pass.
|
||||||
|
LoopInstSimplify pass.
|
||||||
|
|
||||||
- DIBuilder provides simpler interface for front ends like Clang to encode debug info in LLVM IR.
|
- DIBuilder provides simpler interface for front ends like Clang to encode debug info in LLVM IR.
|
||||||
- This interface hides implementation details (e.g. DIDerivedType, existence of compile unit etc..) that any front end should not know about.
|
- This interface hides implementation details (e.g. DIDerivedType, existence of compile unit etc..) that any front end should not know about.
|
||||||
|
@ -367,6 +373,15 @@ ARM: Improved code generation for Cortex-A8 and Cortex-A9 CPUs.
|
||||||
Scheduler now models operand latency and pipeline forwarding.
|
Scheduler now models operand latency and pipeline forwarding.
|
||||||
|
|
||||||
error_code + libsystem + PathV2 changes
|
error_code + libsystem + PathV2 changes
|
||||||
|
The system_error header from C++0x was added.
|
||||||
|
* Use if (error_code ec = function()) to check for error conditions
|
||||||
|
from functions which return it.
|
||||||
|
* error_code::message returns a human readable description of the error.
|
||||||
|
|
||||||
|
PathV1 has been deprecated in favor of PathV2 (sorry I didn't finish
|
||||||
|
this before the release).
|
||||||
|
* No Path class, use a r-value convertible to a twine instead.
|
||||||
|
* Assumes all paths are UTF-8.
|
||||||
|
|
||||||
new macho-dump tool
|
new macho-dump tool
|
||||||
|
|
||||||
|
@ -410,14 +425,42 @@ Countless ARM microoptimizations.
|
||||||
|
|
||||||
Speedups to various mid-level passes:
|
Speedups to various mid-level passes:
|
||||||
GVN is much faster on functions with deep dominator trees / lots of BBs.
|
GVN is much faster on functions with deep dominator trees / lots of BBs.
|
||||||
DomTree and DominatorFrontier are much faster to compute.
|
DomTree and DominatorFrontier are much faster to compute, and preserved by
|
||||||
|
more passes (so they are computed less often)
|
||||||
|
|
||||||
|
|
||||||
new 'hotpatch' attribute: LangRef.html#fnattrs
|
new 'hotpatch' attribute: LangRef.html#fnattrs
|
||||||
|
|
||||||
|
APInt API changes, see PR5207.
|
||||||
|
|
||||||
|
DSE is more aggressive with stores of different types: e.g. a large store
|
||||||
|
following a small one to the same address.
|
||||||
|
|
||||||
|
New naming rules in coding standards: CodingStandards.html#ll_naming
|
||||||
|
|
||||||
|
LiveDebugVariables is a new pass that keeps track of debugging information for
|
||||||
|
user variables that are kept in registers in optimized builds.
|
||||||
|
|
||||||
|
We now optimize various idioms for overflow detection into check of the flag
|
||||||
|
register on various CPUs, e.g.:
|
||||||
|
unsigned long t = a+b;
|
||||||
|
if (t < a) ...
|
||||||
|
into:
|
||||||
|
addq %rdi, %rbx
|
||||||
|
jno LBB0_2
|
||||||
|
|
||||||
|
X86: Much better codegen for several cases using adc/sbb instead of cmovs for
|
||||||
|
conditional increment and other idioms.
|
||||||
|
|
||||||
|
MVT::Flag renamed to MVT::Glue
|
||||||
|
|
||||||
|
Removed the PartialSpecialization pass, it was unmaintained and buggy.
|
||||||
|
|
||||||
</pre></li>
|
</pre></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
Still todo: [101129-110228]
|
Still todo: [110117-110228]
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue