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.
- Only provide /usr/include in the default C header search path.
- OpenBSD does not support TLS.
- Provide target support for powerpc, arm, mips64, mips64el and sparc.
cmake-based ports that use "CHECK_LIBRARY_EXISTS(pthread ...)".
Fix libpthread linking for devel/llvm too (additional care was
needed).
No fallout in a bulk build: thanks landry!