mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-21 23:33:13 +01:00
Fixed a few mini tests issues.
Added 'darwin' and 'Posix' as versions user can't set. Fixed #80 .
This commit is contained in:
@@ -130,7 +130,7 @@ void VersionCondition::checkPredefined(Loc loc, char *ident)
|
||||
"DigitalMars", "LLVM", "LLVMDC", "LLVM64",
|
||||
"X86", "X86_64", "PPC", "PPC64",
|
||||
"Windows", "Win32", "Win64",
|
||||
"linux",
|
||||
"linux", "darwin", "Posix",
|
||||
"LittleEndian", "BigEndian",
|
||||
"all",
|
||||
"none",
|
||||
|
||||
14
gen/toir.cpp
14
gen/toir.cpp
@@ -2156,12 +2156,20 @@ DValue* ArrayLiteralExp::toElem(IRState* p)
|
||||
Logger::cout() << (dyn?"dynamic":"static") << " array literal with length " << len << " of D type: '" << arrayType->toChars() << "' has llvm type: '" << *llType << "'\n";
|
||||
|
||||
// llvm storage type
|
||||
const LLType* llStoType = LLArrayType::get(DtoType(elemType), len);
|
||||
const LLType* llElemType = DtoTypeNotVoid(elemType);
|
||||
const LLType* llStoType = LLArrayType::get(llElemType, len);
|
||||
Logger::cout() << "llvm storage type: '" << *llStoType << "'\n";
|
||||
|
||||
// don't allocate storage for zero length dynamic array literals
|
||||
if (dyn && len == 0)
|
||||
{
|
||||
// dmd seems to just make them null...
|
||||
return new DSliceValue(type, DtoConstSize_t(0), getNullPtr(getPtrToType(llElemType)));
|
||||
}
|
||||
|
||||
// dst pointer
|
||||
LLValue* dstMem = 0;
|
||||
dstMem = DtoAlloca(llStoType, "arrayliteral");
|
||||
// FIXME: dynamic array literals should be allocated with the GC
|
||||
LLValue* dstMem = DtoAlloca(llStoType, "arrayliteral");
|
||||
|
||||
// store elements
|
||||
for (size_t i=0; i<len; ++i)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
module tangotests.arrays2;
|
||||
module mini.arrays16;
|
||||
|
||||
void main()
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
module tangotests.arrays3;
|
||||
module mini.arrays17;
|
||||
|
||||
void main()
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
module tangotests.arrays4;
|
||||
module mini.arrays18;
|
||||
|
||||
struct Str { int a,b; }
|
||||
void main() {
|
||||
|
||||
9
tests/mini/arrays19.d
Normal file
9
tests/mini/arrays19.d
Normal file
@@ -0,0 +1,9 @@
|
||||
module mini.arrays19;
|
||||
|
||||
extern(C) int printf(char*, ...);
|
||||
|
||||
void main()
|
||||
{
|
||||
bool var = ([] is null);
|
||||
assert(var);
|
||||
}
|
||||
23
tests/mini/arrays20.d
Normal file
23
tests/mini/arrays20.d
Normal file
@@ -0,0 +1,23 @@
|
||||
module mini.arrays20;
|
||||
|
||||
int[] foo()
|
||||
{
|
||||
return [2,4,6];
|
||||
}
|
||||
|
||||
int[] bar()
|
||||
{
|
||||
return [1,3,5];
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
auto a = foo();
|
||||
auto b = bar();
|
||||
assert(b[0] == 1);
|
||||
assert(a[0] == 2);
|
||||
assert(b[1] == 3);
|
||||
assert(a[1] == 4);
|
||||
assert(b[2] == 5);
|
||||
assert(a[2] == 6);
|
||||
}
|
||||
13
tests/mini/complex5.d
Normal file
13
tests/mini/complex5.d
Normal file
@@ -0,0 +1,13 @@
|
||||
module complex5;
|
||||
|
||||
void main()
|
||||
{
|
||||
cfloat c = 3+2i;
|
||||
foo(c);
|
||||
}
|
||||
|
||||
void foo(cfloat c)
|
||||
{
|
||||
assert(c.re > 2.9999 && c.re < 3.0001);
|
||||
assert(c.im > 1.9999i && c.im < 2.0001);
|
||||
}
|
||||
Reference in New Issue
Block a user