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