Kai Nacke
88f3de8bea
Merge branch 'ltsmaster'
2016-03-22 19:05:07 +01:00
Martin
608ce9852e
Emit symbols by default as COMDATs
...
That's apparently what DMD does and what currently happens for all
non-MSVC targets anyway.
For MSVC, we need this to enforce the `any` selection instead of
`no duplicates`, otherwise the linker complains about multiply defined
symbols and refuses to link without an extra command line option
(which in turn outputs a non-suppressable warning).
2016-03-20 18:04:42 +01:00
Martin
88dcb4349a
Refactor setting linkage type and COMDAT
2016-03-20 16:37:44 +01:00
Kai Nacke
24adf155ff
Revert "Revert "Merge branch 'ltsmaster'""
...
This reverts commit 1653911600
.
2016-03-03 21:12:53 +01:00
Kai Nacke
1653911600
Revert "Merge branch 'ltsmaster'"
...
This reverts commit dcb781004b
, reversing
changes made to 3c6f09faf0
.
2016-03-03 13:14:39 +01:00
Kai Nacke
dcb781004b
Merge branch 'ltsmaster'
2016-03-03 07:50:17 +01:00
Kai Nacke
2b2438b5b2
Fix IEEE 128-bit reals.
...
The previous implementation sets all reals to 0.0.
2016-03-02 11:42:09 +00:00
Kai Nacke
4d40ea8fcf
AArch64: This platform uses IEEE 128-bit floats.
...
This adds the missing code paths.
2016-03-01 22:02:29 +01:00
Dan Olson
51074b0ce5
Zero extend char and wchar
...
Add LLVM zeroext attribute to char and wchar types so they are
compatible with similar sized C ABI unsigned int types.
In particular, this is needed for ARM (fixes runnable/cppa.d at -O3)
and seems like proper behavior for all supported ABIs even though the
x86 ABIs get by without this.
2016-02-25 19:29:14 +00:00
Johan Engelen
acdcc4a8c1
Merge branch 'master' into merge-2.069
2016-02-13 20:12:17 +01:00
David Nadlinger
5a84c2524d
DtoType: Handle enum forward references
...
Note that we don't set t->ctype (we'd need a new IrTypeEnum or something
along the lines). This is okay because we don't do so for enums in either
case, even in the normal code paths. Enums are regarded as being
"transparent" in that sense. We might want to rethink this in the future,
though.
Fixes DMD test case 'ice13792'.
2016-02-06 21:44:53 +01:00
David Nadlinger
10d17e9c92
DtoBitCast: Accept llvm::Twine [nfc]
2016-01-31 00:57:34 +01:00
Johan Engelen
29ce4012af
dmd2 --> ddmd. Merge (almost all of) our changes to dmd source into the new D source of dmd 2.069.2.
...
Also adds the CMake infrastructure to compile and link the D source files.
The build is partially broken:
- A few files in Phobos and druntime do not build
- MSVC build is broken because of unresolved symbols involving reals
2016-01-28 19:03:58 +01:00
Kai Nacke
8df1f7ec1a
Add more support for xBSD type OS.
...
Use the same code for FreeBSD, NetBSD, OpenBSD and DragonFly BSD.
2016-01-22 22:10:33 +01:00
Martin
956061c3c7
Revise DtoGEP() helpers and mark most GEPs inbounds
2015-12-14 00:18:15 +01:00
Martin
0671e91d6b
Remove getTypePaddedSize() and use getTypeAllocSize() instead
...
The functions were equivalent, only leading to confusion.
2015-12-04 22:23:09 +01:00
Martin
ddfaac10b3
Rename DtoAggrCopy/ZeroInit() to DtoMemCpy/SetZero() overloads
...
And replace some obvious load->store combos by a memcpy.
2015-12-04 22:23:09 +01:00
Martin
740a21eb8f
Rename DtoIsPassedByRef() to DtoIsInMemoryOnly()
...
Motivation: issue #937
2015-12-04 22:23:09 +01:00
Martin
2dfa5e8569
Some more cosmetic fixes
...
Found by searching for lines > 80 chars.
2015-11-05 19:12:32 +01:00
David Nadlinger
05d45350aa
clang-tidy: Add readability-else-after-return
2015-11-02 11:30:40 +02:00
David Nadlinger
9df487edff
gen/ir: clang-tidy the world
2015-11-02 11:30:40 +02:00
David Nadlinger
44b0f7b615
driver/gen/ir: clang-format the world
...
This uses the LLVM style, which makes sense for sharing code
with other LLVM projects. The DMD code we use will soon all
be in D anyway.
2015-11-02 00:28:01 +02:00
Martin
90197d6c72
Simplify working with LLVM attributes
2015-11-01 16:19:27 +01:00
Martin
60d676e2a1
Drop support for LLVM < 3.5
...
This allows to clean up the code a little.
2015-10-30 22:24:05 +01:00
Martin
93158caca8
Respect alignments of captured variables when building nested context LL struct
2015-10-18 23:25:37 +02:00
Martin
b13565c17e
Refactor common i1ToI8(voidToI8(DtoType(...)))
code occurrences
2015-10-03 22:58:00 +02:00
Martin
1a42358cf6
Treat atomic instructions as intrinsics
...
Whose types aren't rewritten by the regular TargetABI.
2015-09-18 00:02:57 +02:00
Kai Nacke
ab2e8e3646
Refactor new COMDAT code.
...
Linkage and the COMDAT flag is now returned as std::pair<>.
Also adds more COMDATs.
2015-09-17 21:04:40 +02:00
David Nadlinger
0922254dd1
Directly emit IR into same llvm::Module instead of using Linker
...
GitHub: Fixes #970 .
2015-06-14 21:36:35 +02:00
David Nadlinger
4cefa5e8f5
Remove unused DtoInterfaceInfoType and support code
2015-06-14 21:27:21 +02:00
Kai Nacke
23303140fe
Merge branch 'master' into merge-2.067
2015-05-22 21:44:33 +02:00
Kai Nacke
8d0fada2c2
LLVM 3.7: The signature of CreateCall() has changed.
...
The method now takes an array with the argument values.
2015-05-22 21:25:14 +02:00
Kai Nacke
1036edc266
Merge branch 'master' into merge-2.067
2015-05-17 13:06:46 +02:00
Kai Nacke
b92e377d49
Fix definition of D_LP64.
...
LP64 defines a C environment with 64bit pointers and char/short/int/long
are 8/16/32/64bit. char/short/int/long have defined sizes in D. We need
to look only at the pointer size.
There are now 64bit environments with 32bit pointers. Examples are
x32 in Intel and N32 on MIPS64. For these environments D_LP64 should
not defined but the global.param.is64bit is still true. The definition
of size_t is also affected. If only 32bit are addressable then size_t
should also be a 32bit type. (This is not required by C standard but
common practize.)
The net result is that not only the definition of D_LP64 must be changed
but also DtoSize_t().
2015-05-17 12:29:23 +02:00
Kai Nacke
1385c17efc
Merge branch 'master' into merge-2.067
2015-04-15 21:46:16 +02:00
Dmitri Makarov
efa96d69d8
Cache global variables for string literals.
2015-04-15 09:56:02 +02:00
kai
d652ef76a1
Enable trivial code path for 128bit integer.
...
They are not yet enabled.
2015-04-06 17:30:04 +02:00
Kai Nacke
ced658da92
Merge branch 'master' into merge-2.067
2015-04-05 03:29:30 +02:00
Kai Nacke
a4924c50e1
LLVM 3.7: llvm::ConstantExpr::getElementPtr() wants element type.
...
This is the same change like the one on the GEP instruction.
2015-04-04 01:37:14 +02:00
kai
b343107077
Merge branch 'master' into merge-2.067
2015-03-22 13:59:39 +01:00
Kai Nacke
c0e23d6814
LLVM 3.7: llvm::GetElementPtrInst() requires the pointed-to type.
...
Currently, the pointer type is passed which causes an assertion.
Also add assertion to verify that parameter ptr is really of a
pointer type.
2015-03-22 13:55:53 +01:00
Kai Nacke
2ad804c16b
Implement core.bitop.volatileLoad() and core.bitop.volatileStore()
...
The implementation introduces 2 new intrinsics: ldc.bitop.vld and ldc.bitop.vst.
2015-03-22 00:11:43 +01:00
kai
95806fd7cd
Merge branch 'master' into merge-2.067
...
Conflicts:
runtime/druntime
2015-03-15 20:35:44 +01:00
kai
30df48f360
LLVM 3.7: llvm::GetElementPtrInst::Create() now has an additional type parameter.
2015-03-15 18:07:11 +01:00
Kai Nacke
886c2eab06
Merge branch 'master' into merge-2.067
...
Conflicts:
runtime/druntime
2015-03-01 15:03:31 +01:00
kai
a65f001356
Remove now unused function DtoAggrPairSwap().
...
The function was only used in the old ABI implementation.
2015-02-25 07:52:06 +01:00
kai
e455b90456
Merge branch 'master' into merge-2.067
...
Conflicts:
dmd2/template.c
runtime/druntime
runtime/phobos
2015-02-24 07:23:58 +01:00
Martin
e7bfb78632
Refactor attributes system.
...
By introducing abstractions for attribute builder and set since they differ
greatly between LLVM 3.1-3.3.
2015-02-23 22:52:11 +01:00
Martin
f5592048e5
Get rid of obsolete TargetABI::newFunctionType() and doneWithFunctionType().
2015-02-23 22:52:11 +01:00
Martin
9839cfb889
Experimental varargs fix
2015-02-23 22:52:10 +01:00