Commit Graph
862 Commits
Author SHA1 Message Date
Frits van Bommel 35d62be334 Remove some other code that tested for LLVM before r67588. 2009-05-12 16:02:51 +02:00
Frits van Bommel ec476cc5f1 Remove an old workaround that was kept around for ABI-compatibility on x86-64
between different LLVM versions.
This means LLVM r67588 is required if you want to compile for x86-64, otherwise
the backend will assert when you try to return e.g. struct { int i; char c; }
from a function. (In particular, this is no longer compatible with LLVM 2.5)
It also means that any code returning small structs on x86-64 will probably
need to be recompiled in order to be linkable to code compiled with this change.
2009-05-12 15:50:48 +02:00
Tomas Lindquist Olsen 77cb1c6b8e Added error instead of assertion failure when trying to get !TypeInfo for a forward declared struct. 2009-05-11 20:54:25 +02:00
Frits van Bommel e4e07baf87 Re-enable consistency check for fixed LLVM versions. 2009-05-11 15:48:33 +02:00
Frits van Bommel 49a2924823 Update for metadata changes in LLVM trunk. 2009-05-11 11:59:22 +02:00
Christian Kamm 041a8c4bd3 Fix DtoArrayCopyToSlice by passing length*sizeof(element) instead of just length to _d_array_slice_copy. 2009-05-10 22:26:04 +02:00
Frits van Bommel 57fc3463f6 Run backend without optimizations when no optimization parameters were used,
even when not generating debug info.
2009-05-10 20:22:08 +02:00
Christian Kamm dfaba71dce Fix the ldcbinarypath config file rewriting. 2009-05-10 18:14:36 +02:00
Christian Kamm d7c984fbef Explicitly include string.h for strdup. 2009-05-10 18:03:32 +02:00
Christian Kamm ba95eab71f In config file: replace %%ldcbinarypath%% with the path to the ldc executable. 2009-05-10 17:58:09 +02:00
Tomas Lindquist Olsen dbe4852b7b Fixed D-style vararg arguments with types that have sizes bigger that pointers, yet are not aligned to pointer sizes. Fixes ticket #276 . 2009-05-10 04:37:03 +02:00
Frits van Bommel d1f582583b Turn new _d_array_slice_copy runtime call into memcpy when the slice lengths are
equal and alias analysis says it's safe.
2009-05-10 04:18:14 +02:00
Tomas Lindquist Olsen dfea022a86 Changed array slice copying to call a runtime function when assertions or array bound checks are enabled instead of just doing a memcpy. This makes sure an exception is thrown if the copy is invalid (ie. different lengths or overlap). Fixes ticket #283 . Rebuilding the runtime is necessary. 2009-05-10 02:23:05 +02:00
Tomas Lindquist Olsen ecc106d7b7 Fixed dmdfe generated class invariant calls. Also insert proper "this !is null" check before it. Fixed invariant* dstress regressions and generally seems like a good idea. Hope I didn't break anything.. minitests run fine! 2009-05-10 00:46:09 +02:00
Christian Kamm 06108db87e Yet another fdiv/fsub special case. 2009-05-09 20:13:05 +02:00
Christian Kamm 883f13dbce Strip metadata for -singleobj as a workaround to a LLVM linking bug. 2009-05-09 18:57:21 +02:00
Christian Kamm cae1f425a0 Update for LLVM rev > 71348: getTypePaddedSize -> getTypeAllocSize 2009-05-09 18:57:00 +02:00
Tomas Lindquist Olsen 3aeb56abec Fixed compile unit for debug info for array operations, fixed ticket #280 . 2009-05-09 15:27:27 +02:00
Christian Kamm 81858cfc76 Automated merge with http://hg.dsource.org/projects/ldc 2009-05-09 08:58:55 +02:00
Christian Kamm 968e1148d8 Restrict second arg of certain floating-point stores to ST. Fix type postfix
for the two argument form of fistp and fisttp.
2009-05-09 08:58:41 +02:00
Frits van Bommel 634d623b34 Some tweaks to -simplify-drtcalls. 2009-05-09 02:34:27 +02:00
Frits van Bommel 5b82f780f8 Allocate objects on the stack if they (a) don't have a destructor, and
(b) don't override the delete operator (on top of the regular conditions for
stack allocation that also apply to arrays, structs, etc.).
The "no destructor" clause is not strictly necessary, but calling them at the
right time would be tricky to say the least; it would involve, among other
things, "manually" inserting a try-finally block around anything that might
throw exceptions not caught in the current function.

Note: objects with custom new operators are automatically ignored because they
don't use the regular allocation runtime call, so there's no need to pay special
attention to them.
2009-05-09 00:50:15 +02:00
Frits van Bommel adf1fd4d44 Work around an LLVM bug by not referring to globals from metadata. This was
only used for consistency checking anyway.
For the LLVM bug, see http://llvm.org/PR4180 / http://llvm.org/PR4046
2009-05-08 16:00:44 +02:00
Christian Kamm cde738111c Fix type postfix for fistp/fisttp. Two operand form still broken (is it even legal?). 2009-05-07 21:49:58 +02:00
Frits van Bommel f5b56ce346 Fix typo in function name 2009-05-07 15:33:06 +02:00
Christian Kamm b6ad8b69ab Add newline to get rid of warning. 2009-05-07 21:07:50 +02:00
Christian Kamm 2afbfbe8da Automated merge with http://hg.dsource.org/projects/ldc 2009-05-07 21:01:57 +02:00
Christian Kamm 37edd5add6 Fix certain cases of floating point instruction mistranslation. 2009-05-07 21:01:44 +02:00
Tomas Lindquist Olsen ca4f588c08 Fixed deal breaker bug for more-at-once compilation when any module contained aggregates. Fixes ticket #272 . 2009-05-07 02:10:29 +02:00
Frits van Bommel 7f07cf02ad Automated merge with http://hg.dsource.org/projects/ldc 2009-05-06 20:29:27 +02:00
Frits van Bommel 52c22c6c27 Stack-allocate zero-initialized arrays. 2009-05-06 20:27:48 +02:00
Christian Kamm 108309a579 Ignore short/long prefix of labels instead of ignoring the whole branch
instruction!
2009-05-06 19:56:33 +02:00
Christian Kamm c57f6212a6 Make the no-operand versions of floating point inline asm instructions always
pop the floating point stack - like dmd does.
2009-05-06 18:54:20 +02:00
Christian Kamm 8a8818104b Translate fsub/fdiv correctly. See #256. 2009-05-06 18:08:44 +02:00
Frits van Bommel ec573df5b2 Some refactoring 2009-05-06 15:58:15 +02:00
Frits van Bommel c6b6d1874a Postpone (expensive) escape analysis until we're sure it's needed. 2009-05-06 14:11:37 +02:00
Kelly Wilson c60ce29bde fix wrong arg order for fmul/fadd 2009-05-05 11:51:00 -06:00
Frits van Bommel 5723fa7492 Add 'nounwind' attribute to the relevant runtime functions, and use it when
deciding whether or not to generate an invoke instead of a call.
2009-05-04 20:26:45 +02:00
Frits van Bommel cf0b8936ce Factor out the code to find gcc, and add a command-line option to override the
default executable name.
This should help cross-compilation by allowing a cross-gcc to be specified from
the configuration file instead of only through the CC environment variable.
2009-05-04 13:32:16 +02:00
Frits van Bommel f7e54dce10 Don't forget to update the control flow when deleting an invoke.
Fixes #284.
2009-05-04 12:08:30 +02:00
Frits van Bommel fa79329102 Stack promotion for _d_newarrayvT. Array literals, concatenations (a ~ b) and
such are eligible for stack-allocation now.
2009-05-03 18:01:45 +02:00
Frits van Bommel a2eee70761 Add -verify-each option to ease debugging 2009-05-03 21:58:28 +02:00
Frits van Bommel 67fc0aca20 Remove some overly verbose debug output 2009-05-03 20:19:49 +02:00
Frits van Bommel 865ae79e27 Strip metadata even when addPassesForOptLevel() isn't called, for instance when
only inlining or when manually specifying passes.
2009-05-03 20:16:15 +02:00
Frits van Bommel 3572944b90 Remove bogus noalias attribute from _d_arraysetlength[i]T. 2009-05-03 15:24:05 +02:00
Christian Kamm 77100f890c Make static int[] a = [1, 2]; a[0] = 4; not segfault
by making the array data ptr a non-const global variable.
2009-05-03 11:16:54 +02:00
Frits van Bommel c831367b24 Factor out some constants into the header so producers and consumers of
metadata stay in sync (and are more readable).
2009-05-02 20:42:58 +02:00
Matti Niemenmaa 87d960c29a Fix build when USE_METADATA is off. 2009-05-02 19:03:33 +03:00
Frits van Bommel 262ef97945 There's an issue with LLVM metadata support; it triggers an assert when trying
to generate asm for code with metadata globals.
This new pass is used as a workaround: it strips metadata from the module before
it reaches the code generator.
Obviously, this is disabled if LLVM doesn't support metadata.
2009-05-02 12:19:43 +02:00
Frits van Bommel 34955bcbf9 Remove calls to some runtime functions if their results are unused 2009-05-02 11:58:50 +02:00