Avoid integer overflows around realloc calls resulting in potential
heap. Problem identified by Guido Vranken.
r225819
Use the integrated assembler as default on PowerPC
r225957
Use the integrated assembler by default on SPARC.
r225958
Use the integrated assembler by default on 32-bit PowerPC and SPARC.
the build disable PIE on PowerPC as a workaround for the time being until it
can be determined what the issue is and fixed properly.
Workarounded provided by pascal@
Totally forget deallocated SDNodes in SDDbgInfo.
What would happen before that commit is that the SDDbgValues associated with
a deallocated SDNode would be marked Invalidated, but SDDbgInfo would keep
a map entry keyed by the SDNode pointer pointing to this list of invalidated
SDDbgNodes. As the memory gets reused, the list might get wrongly associated
with another new SDNode. As the SDDbgValues are cloned when they are transfered,
this can lead to an exponential number of SDDbgValues being produced during
DAGCombine like in http://llvm.org/bugs/show_bug.cgi?id=20893
Note that the previous behavior wasn't really buggy as the invalidation made
sure that the SDDbgValues won't be used. This commit can be considered a
memory optimization and as such is really hard to validate in a unit-test.
Sparc: disable printing on longer "brX,pt" aliases
r208966
Sparc: disable printing of jmp/call aliases (C++ does it)
r217801
Fix a lot of confusion around inserting nops on empty functions.
Set trunc store action to Expand for all X86 targets.
When compiling without SSE2, isTruncStoreLegal(F64, F32) would return Legal, whereas
with SSE2 it would return Expand. And since the Target doesn't seem to actually
handle a truncstore for double -> float, it would just output a store of a full
double in the space for a float hence overwriting other bits on the stack.
[PowerPC] 32-bit ELF PIC support
r213899
Don't use 128bit functions on PPC32.
This adds initial support for PPC32 ELF PIC (Position Independent Code; the
-fPIC variety), thus rectifying a long-standing deficiency in the PowerPC
backend.
r213960
[PowerPC] Support TLS on PPC32/ELF
- A fix for the SPARC float handling. Adding the missing & to the field allows
the backend feature flag to be passed back which it was not without it.
- Add some patches to enable the integrated assembler on PowerPC / SPARC.
I left these out before as I thought because Clang was not obeying this
setting and had its own similar bits they were not necessary but turns
out the backend has some code that does obey this setting.
ok sthen@
Legalizer: Add support for splitting insert_subvectors.
We handle this by spilling the whole thing to the stack and doing the
insertion as a store.
PR19492. This happens in real code because the vectorizer creates v2i128 when AVX is
enabled.
ok matthew@
- Use dwarf-2 by default on OpenBSD and FreeBSD.
- Make VSELECT selection terminate in cases where the condition type has
to be split and the result type widened.
(fixes an OOM crash with the vectorizer on i386 if not utilizing SSE2
or newer)
- The last step of _mm_cvtps_pi16 should use _mm_packs_pi32, which is a
function that reads two __m64 values and packs four 32-bit values into
four 16-bit values.
Fix profiling..
- Alias the command line parameter -p to -pg.
From Bitrig
ok sthen@
has colours support, but the added dependency seems to cause issues
when linking the LLVM libraries as is. Probably an issue with the
build infrastructure but we don't care about colours.
Requeted by jsg@
ok sthen@
C++11 codebase.
This brings in a number of improvements over 3.4 including..
X86 assembler with 16-bit support
Much improved SPARC backend
stack protector strong support
ok sthen@
build infrastructure
- Remove the CMake patch as sebastia@ says it did not actually work and should be
removed
- Some frontend driver tweaks for the external assembler handling for 32-bit mode
(-m32) on amd64, powerpc handling and bring the ABI determination bits in line
with the other OS's to use the getGnuCompatibleMipsABIName function
ok sthen@
X86: Disable generation of rep;movsl when %esi is used as a base pointer.
This happens when there is both stack realignment and a dynamic alloca in the
function. If we overwrite %esi (rep;movsl uses fixed registers) we'll lose the
base pointer and the next register spill will write into oblivion.