digitalmars.D.bugs - [Issue 234] New: dynamic arrays in combination with SSE instructions cause segment faults
- d-bugmail puremagic.com (46/46) Jul 02 2006 http://d.puremagic.com/issues/show_bug.cgi?id=234
- d-bugmail puremagic.com (18/18) Dec 12 2006 http://d.puremagic.com/issues/show_bug.cgi?id=234
http://d.puremagic.com/issues/show_bug.cgi?id=234
Summary: dynamic arrays in combination with SSE instructions
cause segment faults
Product: D
Version: 0.162
Platform: PC
OS/Version: Linux
Status: NEW
Keywords: wrong-code
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla digitalmars.com
ReportedBy: thomas-dloop kuehne.cn
If compiled with -version=dynamic, the code below segmentfaults.
import std.stdio;
int main(){
version(dynamic){
double[] a = new double[2];
double[] b = new double[2];
}else{
double[2] a;
double[2] b;
}
a[0] = 4.0;
a[1] = 2.0;
b[0] = -0.5;
b[1] = -0.25;
writefln("a:\t%s\t%s", a[0], a[1]);
writefln("b:\t%s\t%s", b[0], b[1]);
asm{
movupd XMM0, a;
movupd b, XMM0;
emms;
}
writefln("-- asm finished --");
writefln("a:\t%s\t%s", a[0], a[1]);
writefln("b:\t%s\t%s", b[0], b[1]);
return 0;
}
test cases:
http://dstress.kuehne.cn/run/o/odd_bug_05_A.d
http://dstress.kuehne.cn/run/o/odd_bug_05_B.d
http://dstress.kuehne.cn/run/o/odd_bug_05_C.d
http://dstress.kuehne.cn/run/o/odd_bug_05_D.d
--
Jul 02 2006
http://d.puremagic.com/issues/show_bug.cgi?id=234
bugzilla digitalmars.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
It segment faults because dynamic arrays are stored differently than static
arrays. When using inline asm, one must account for this. For the dynamic
arrays, using the following will work:
asm{
mov EAX,a+4;
movupd XMM0, [EAX];
mov EAX,b+4;
movupd [EAX], XMM0;
emms;
}
--
Dec 12 2006








d-bugmail puremagic.com