summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/tools/clang/lib/Basic/Targets (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Remove LLVM 8.0.1 files.patrick2020-08-0346-11721/+0
|
* int64_t and intmax_t are always (signed) long long on OpenBSD.kettenis2020-07-181-0/+2
| | | | ok deraadt@
* Set the default ABI for OpenBSD to ELFv2 in the clang frontend as well.kettenis2020-07-111-0/+4
| | | | | | | This makes sure the compiler defines the _CALL_ELF pre-processor symbol correctly. ok mortimer@
* Make long double the same as double for now on powerpc64 like we do onkettenis2020-06-281-0/+1
| | | | | | powerpc. This matched what FreeBSD does. ok patrick@
* Powerpc64 should use same _mcount profiling as powerpc 32bit.drahn2020-05-301-0/+1
| | | | ok kettenis@
* Define the appropriate __GCC_HAVE_SYNC_COMPARE_AND_SWAP_* symbols like allkettenis2020-04-051-0/+5
| | | | | | other clang platforms do. ok jca@
* Implement the 'h' register constraint on mips64. This lets clang buildvisa2019-07-011-0/+1
| | | | | | | | | | | pieces of software that use the constraint if the compiler claims to be compatible with GCC 4.2.1. Note that the constraint was removed in GCC 4.4. The reason was that 'h' could generate code whose result is unpredictable. The underlying reason is that the HI and LO registers are special, and the optimizer has to be careful when choosing the order of HI/LO accesses. It looks that LLVM has the needed logic.
* Merge LLVM 8.0.0 release.patrick2019-06-235-220/+25
| | | | | | | | | Prepared with help from jsg@ and mortimer@ Tested on amd64 by bcallah@, krw@, naddy@ Tested on arm64 by patrick@ Tested on macppc by kettenis@ Tested on octeon by visa@ Tested on sparc64 by claudio@
* Import LLVM 8.0.0 release including clang, lld and lldb.patrick2019-06-2318-255/+466
|
* On OpenBSD/powerpc (and NetBSD/powerpc) long double == double like onkettenis2019-02-101-1/+7
| | | | | | FreeBSD/powerpc. From George Koehler. ok millert@, deraadt@, visa@
* implement -msave-args in clang/llvm, like the sun did for gccdlg2019-01-302-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this is a bit different to gcc as gcc likes to use movs to move stuff on and off the stack, and directly updates the stack pointers with add and sub instructions. llvm prefers to use push and pop instructions, is a lot more careful about keeping track of how much stuff is currently on the stack, and generally pops the frame pointer rather than do maths on it. -msave-args adds a bunch of pushes as the first thing a function prologue does. to keep the stack aligned, if there's an odd number of arguments to the function it pushes the first one again to put the frame back on a 16 byte boundary. to undo the pushes the frame pointer needs to be updated in function epilogues. clang emits a series of pops to fix up the registers on the way out, but popping saved arguments is a waste of time and harmful to actual data in the function. rather than add an offset to the stack pointer, -msave-args emits a leaveq operation to fix up the frame again. leaveq is effectively mov rbp,rsp; pop rbp, and is a single byte, meaning there's less potential for gadgets compared to a direct add to rsp, or an explicit mov rbp,rsp. the only thing missing compared to the gcc implementation is adding the SUN_amd64_parmdump dwarf flag to affected functions. if someone can tell me how to add that from the frame lowering code, let me know. when enabled in kernel builds again, this will provide useful arguments in ddb stack traces again.
* Import LLVM 7.0.1 release including clang, lld and lldb.patrick2019-01-2733-650/+1412
|
* Import LLVM 6.0.1 release including clang, lld and lldb.patrick2018-04-0644-0/+10919
"where is the kaboom?" deraadt@