[Issue 17386] New: Internal error: backend\cgcod.c 1841
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Tue May 9 07:37:06 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=17386
Issue ID: 17386
Summary: Internal error: backend\cgcod.c 1841
Product: D
Version: D2
Hardware: x86_64
OS: Windows
Status: NEW
Severity: critical
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: BugReport.SeijiFujita at gmail.com
/*
Title: Internal error: backend\cgcod.c 1841
dmd version: dmd.2.074.0
dmd option: dmd -c -m64 -O -release
Internal error conditions
-------------------------
1. dmd.2.073.0 - dmd.2.074.0 only
2. dmd option is "m64 - O - release"
3. asm.dlang.org confirmed that internal error occurred in "dmd nightly build,
- m64 - O - release"
4. The following code is minimized by Dustmite
*/
int[] bezier() {
int[] polygon ;
for (int i ; ; i++) {
double t = i ;
polygon[2 * i] = cast(int)(t * t );
}
}
/*
Original code:
location: dwt
org.eclipse.swt.win32.win32.x86\src\org\eclipse\swt\custom\CBanner.d(161):
int[] bezier(int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3,
int count) {
int[] bezier(int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3,
int count) {
// The parametric equations for a Bezier curve for x[t] and y[t] where
0 <= t <=1 are:
// x[t] = x0 + 3 (x1 - x0) t + 3 (x0 + x2 - 2x1) t ^ 2 + (x3 - x0 + 3x1
- 3x2) t ^ 3
// y[t] = y0 + 3 (y1 - y0) t + 3 (y0 + y2 - 2y1) t ^ 2 + (y3 - y0 + 3y1
- 3y2) t ^ 3
double a0 = x0;
double a1 = 3 * (x1 - x0);
double a2 = 3 * (x0 + x2 - 2 * x1);
double a3 = x3 - x0 + 3 * x1 - 3 * x2;
double b0 = y0;
double b1 = 3 * (y1 - y0);
double b2 = 3 * (y0 + y2 - 2 * y1);
double b3 = y3 - y0 + 3 * y1 - 3 * y2;
int[] polygon = new int[2 * count + 2];
for (int i = 0; i <= count; i++) {
double t = cast(double) i / cast(double) count;
polygon[2 * i] = cast(int)(a0 + a1 * t + a2 * t * t + a3 * t * t *
t);
polygon[2 * i + 1] = cast(int)(b0 + b1 * t + b2 * t * t + b3 * t * t *
t);
}
return polygon;
}
/// Dustmite
// dmd -c -m64 -O -release CBanner_dmdInternalerror.d > out.txt
// dustmite src "dmd -c -m64 -O -release CBanner_dmdInternalerror.d | diff -
..\out.txt"
*/
--
More information about the Digitalmars-d-bugs
mailing list