June 27, 2006 phobos.lib errors/bug? | ||||
---|---|---|---|---|
| ||||
dmd 0.161 + private import std.c.stdlib; private import std.stdio; private import std.perf; const int TILEW = 1000; const int TILEH = 1000; struct TILE { int x,y; int z[1]; } void foo(TILE arr[TILEW][TILEH], int i) { arr[i%TILEW][i%TILEH].z[0]=i; } void main() { PerformanceCounter c = new PerformanceCounter(); int i; TILE[TILEH][TILEW] arr2; c.start(); for(i = 0; i < 10000000; i++) foo(arr2,i); c.stop(); writefln("foo took: ",c.milliseconds()); } + build.exe main.d = OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved C:\D\dmd\lib\phobos.lib(ti_double) Offset 1C75EH Record Type 0091 Error 1: Previous Definition Different : __init_10TypeInfo_d C:\D\dmd\lib\phobos.lib(ti_double) Offset 1C778H Record Type 0091 Error 1: Previous Definition Different : __Class_10TypeInfo_d C:\D\dmd\lib\phobos.lib(ti_double) Offset 1C791H Record Type 0091 Error 1: Previous Definition Different : __vtbl_10TypeInfo_d Is this a bug? |
June 27, 2006 Re: phobos.lib errors/bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to MM | On Tue, 27 Jun 2006 01:27:15 +0000 (UTC), MM wrote: > Is this a bug? Yes. Its a bug in v3.01 of Build (which BTW is not a DigitalMars product). The current version does not have this problem. Download 3.02 or use "-R:N" switch when building it. build -R:N main.d However, your code will still not run because you are trying to create a 1,000,000 element array on the stack and that will be bigger than the stack space for your app. Here is alternate code that does the same but uses the heap rather than the stack ... ================== private import std.stdio; private import std.perf; const int TILEW = 1000; const int TILEH = 1000; struct TILE { int x,y; int z[1]; } void foo(TILE[] arr, int i) { arr[(i%TILEW)*TILEH + (i%TILEH)].z[0]=i; } void main() { PerformanceCounter c = new PerformanceCounter(); int i; TILE[] arr2; // Allocate contiguous space for all the entries. arr2.length = TILEW * TILEH; c.start(); for(i = 0; i < 10000000; i++) foo(arr2,i); c.stop(); writefln("foo took: ",c.milliseconds()); } ================== -- Derek (skype: derek.j.parnell) Melbourne, Australia "Down with mediocrity!" 27/06/2006 4:45:23 PM |
Copyright © 1999-2021 by the D Language Foundation