Commit Graph

1045 Commits

Author SHA1 Message Date
Frits van Bommel
cc612c7290 Fix hasUnalignedFields(): take static arrays into account too. 2009-03-04 23:17:32 +01:00
Frits van Bommel
d257890e29 Fix bug in default implementation of ABIRewrite::getL. 2009-03-04 23:06:23 +01:00
Tomas Lindquist Olsen
65ba1d4d88 Updated ABI handling to be more flexible with regard to reusing lvalues and allocating fewer temporaries. 2009-03-04 17:24:25 +01:00
Tomas Lindquist Olsen
ca41cb29d9 Added some documentation for the IrFuncTyArg structure, which is key to writing ABI transformations. 2009-03-04 16:13:16 +01:00
Tomas Lindquist Olsen
f25bbe3d09 Fixed inreg attribute to no longer overwrite sign/zeroext. 2009-03-03 21:20:20 +01:00
Tomas Lindquist Olsen
f84a2fb84a Updated lifetime.d with a 32bit faster codepath for overflow checks. 2009-03-03 19:47:39 +01:00
Tomas Lindquist Olsen
d845b11dbd Removed inline asm for overflow checking in runtime that wasn't working. 2009-03-03 19:37:47 +01:00
Tomas Lindquist Olsen
bb495c6e40 remove memory clobber again ... 2009-03-03 19:27:23 +01:00
Tomas Lindquist Olsen
ae214b18e7 Added ~{memory} clobber when a jump_target is generated in inline asm (branch out of inline asm) 2009-03-03 19:18:47 +01:00
Christian Kamm
f0d33b1b20 Move more tests to D_InlineAsm 2009-03-03 19:03:27 +01:00
Christian Kamm
e59ba75553 Adjust mini tests to use D_InlineAsm 2009-03-03 18:26:39 +01:00
Christian Kamm
a3bc6ce3f9 Switch LLVM_InlineAsm -> D_InlineAsm. It's for real this time, hopefully. 2009-03-03 17:44:56 +01:00
Christian Kamm
9433028acd Remove unused defines: X86_REVERSE_PARAMS, X86_PASS_IN_EAX 2009-03-03 17:38:08 +01:00
Tomas Lindquist Olsen
8ce5a07fc0 Fixed potential assertion failure in taking address of function as a constant expression. 2009-03-03 17:27:14 +01:00
Tomas Lindquist Olsen
fdecec122a Disabled some extensive LLVM value logging with -vv that dramatically increases -vv output length for little value. 2009-03-03 17:21:35 +01:00
Tomas Lindquist Olsen
c3a53c0128 Added hasUnalignedFields helper to check if a type has unaligned fields - as per request from fvbommel. Result is cached in TypeStruct. 2009-03-03 15:08:26 +01:00
Tomas Lindquist Olsen
8cad8d6c7a Merged ABI changes into D2 frontend. 2009-03-03 14:10:37 +01:00
Frits van Bommel
84963b9a03 Oops, merge with mainline and actually push this time... 2009-03-03 09:51:15 +01:00
Tomas Lindquist Olsen
6778f06dfe Fixed #218 by disabling the problematic optimization. 2009-03-03 04:41:11 +01:00
Tomas Lindquist Olsen
5dbe3ee8e2 Abstracted more (most) ABI details out of the normal codegen. 2009-03-03 02:51:21 +01:00
Frits van Bommel
a742c59a67 Pass -m32/-m64 on to gcc when assembling and linking 2009-03-01 22:59:03 +01:00
Tomas Lindquist Olsen
100815c097 Fixed find alt script. 2009-03-01 22:40:15 +01:00
Tomas Lindquist Olsen
5275ac0db4 Added script to find the alternative triple of the host. 2009-03-01 22:27:37 +01:00
Tomas Lindquist Olsen
a71b028a0f Implemented basic -m32 and -m64 options. 2009-03-01 22:27:03 +01:00
Tomas Lindquist Olsen
3d6b0b68d5 Remember to set asm type back to void and n=0 when rewriting to sret asm return. 2009-03-01 20:22:10 +01:00
Tomas Lindquist Olsen
ee1e545a0a Removed some code that wasn't supposed to be in last commit! 2009-03-01 19:06:47 +01:00
Tomas Lindquist Olsen
61dfb11bc5 - Fixed x86-32 C ABI for complex number return values.
- Removed unused code from the ABI class.
2009-03-01 19:01:05 +01:00
Frits van Bommel
757601af09 Remove Tango patch that's been applied upstream. 2009-03-01 11:04:05 +01:00
Kelly Wilson
093a22d1d2 Just forgot an opcode for x64 2009-02-28 18:17:45 -07:00
Tomas Lindquist Olsen
1ba0dc70f1 Same fix for align size of void type on D2. 2009-03-01 01:34:20 +01:00
Tomas Lindquist Olsen
c3504e59f3 Fixed alignsize for void types. (it's one byte) 2009-03-01 01:33:08 +01:00
Frits van Bommel
dd41366a99 Use llvm::CallSite instead of custom CallOrInvoke class. 2009-02-28 22:16:52 +01:00
Christian Kamm
b7febcf35a Error gracefully for +=, -=, *=, /= if rhs is complex but lhs isn't. 2009-02-28 19:58:30 +01:00
Frits van Bommel
031474c724 Apply previous changes to dmd2/mtype.c as well. 2009-02-28 17:44:53 +01:00
Frits van Bommel
94790c0cdf Automated merge with http://hg.dsource.org/projects/ldc 2009-02-28 17:35:45 +01:00
Frits van Bommel
d4fdbf59a1 Use LLVM alignment data instead of hand-picked. 2009-02-28 16:09:44 +01:00
Frits van Bommel
99ed181690 Preparation for next patch. Don't ask about why this is needed.
I hate the preprocessor. Let's just leave it at that.
2009-02-28 16:09:35 +01:00
Christian Kamm
2f5b7bcd3e Readded indentation that got lost in the dmd/mars.c -> gen/main.cpp move. 2009-02-28 15:06:09 +01:00
Christian Kamm
d3ea6fb855 Fix alignment info of cdouble, cfloat. They align the same as double, float now. 2009-02-28 13:48:49 +01:00
Christian Kamm
993a624e3e Don't reset gTargetData after compiling a module. Fixes segfault when
compiling more than one file.
2009-02-28 09:06:25 +01:00
Frits van Bommel
70b97b9d1e Remove initialization of padding of reals, ireals and creals.
According to the spec and C ABIs, the contents of padding is undefined.
This was breaking dstress creal_01,02,03,07,08,09 and 20 on x86-64.

The code was apparently added to fix creal_13,14 and 15, which explicitly
compare padding and assert if it's different. I'd argue those tests are broken.
(Also, on x86-64 they *also* fail)

The tests this fixes, on the other hand, are basic arithmetic.
2009-02-27 19:41:25 +01:00
Frits van Bommel
2beff65988 Fix struct field alignment on x86-64 (for align > 8, like real.alignof) 2009-02-27 12:35:31 +01:00
Frits van Bommel
03ce6604a0 Fix cfloat return on x86_64: only perform ABI transformation for non-extern(D)
functions.
There's no need to waste cycles with extern(D), which we get to define
ourselves. Fixes tests/mini/asm8.d. (Since the asm abiret code already assumed
{xmm0, xmm1} returns)
2009-02-26 23:35:39 +01:00
Frits van Bommel
4f51adc810 Implement support for intrinsics returning struct types
(such as llvm.*.with.overflow)
2009-02-26 22:47:06 +01:00
Tomas Lindquist Olsen
693e796893 Fixed druntime lib path in ldc2.conf.in, thanks Matt 2009-02-26 18:43:25 +01:00
Tomas Lindquist Olsen
bcd05cf258 Added some missing version identifiers. 2009-02-26 18:28:50 +01:00
Tomas Lindquist Olsen
7ef533b136 Fixed debug info for globals in D2. 2009-02-26 18:02:13 +01:00
Tomas Lindquist Olsen
886a66f4e0 Missing %s error param in main.cpp 2009-02-26 15:51:19 +01:00
Frits van Bommel
001f83a296 Don't crash if we don't know what ABI to use. Assume some defaults instead. 2009-02-26 15:23:52 +01:00
Frits van Bommel
695fc3f5c3 Fix some -vv output 2009-02-26 14:51:05 +01:00