This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c/8730: Cannot compile C function inside other C function
- From: ilgis at num dot uni-sb dot de
- To: gcc-gnats at gcc dot gnu dot org
- Cc: info at ilghiz dot com
- Date: 27 Nov 2002 10:14:27 -0000
- Subject: c/8730: Cannot compile C function inside other C function
- Reply-to: ilgis at num dot uni-sb dot de
>Number: 8730
>Category: c
>Synopsis: Cannot compile C function inside other C function
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Nov 27 02:16:02 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: University of Saarbruecken
>Release: gcc-2.95.3 - gcc-3.2
>Organization:
>Environment:
SuSE 7.1-8.0, gcc-2.95.3 - gcc-3.2
>Description:
During compilation by gcc-2.95.3 with -O1, -O2, -O3 I got messages:
Internal compiler error in `instantiate_virtual_regs_1', at function.c:3881
gcc-3.0 or gcc-3.2 cannot compile with/without optimization with error:
Internal compiler error in expand_expr, at expr.c:6437
I removed all not important statements in my C source, so now it is about 30 lines:
double cblas_dnrm2(const int N, const double *X, const int incX);
void enmin_(int *N, void *func, void *grad, void *fmsg, double *B, double *X,
int *NCF, int *NCG, int *EXSTAT);
void outres_(int *n, int *iter, double *res, double *mflops, int *info);
void func(int *dummy, double *inB, double *res);
extern double *A1, *A2, *V, *VV, *W;
int test(int N, int NN[N+1], int NNN, int MaxRank, int NEL, double A[][NEL],
int MASK[N-1][NEL], double B[MaxRank][NNN], int MaxIter1)
{ int Rank, len=NN[N]-NN[N-1];
double Res[2];
void Minimize(int M, double AA[M][NEL], double *B, double V[MaxRank][NEL], int Init)
{ int NCF, NCG, EXSTAT;
enmin_(NN+N-1, func, func, outres_, B, B+NN[N+1]+1, &NCF, &NCG, &EXSTAT);
func(NN+N-1, B, Res);
Res[1]=cblas_dnrm2(NEL, V[Rank], 1);
return;
}
int M=len, j;
for(Rank=0; Rank<MaxRank; Rank++)
for(j=0; j<MaxIter1; j++)
Minimize(M, (void*)A2, B[Rank], (void*)V, j);
return Rank;
}
>How-To-Repeat:
gcc -v -save-temps -Wall -c t.c
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="t.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="t.c"
IGRvdWJsZSBjYmxhc19kbnJtMihjb25zdCBpbnQgTiwgY29uc3QgZG91YmxlICpYLCBjb25zdCBp
bnQgaW5jWCk7CiB2b2lkIGVubWluXyhpbnQgKk4sIHZvaWQgKmZ1bmMsIHZvaWQgKmdyYWQsIHZv
aWQgKmZtc2csIGRvdWJsZSAqQiwgZG91YmxlICpYLAogICAgICAgICAgICAgaW50ICpOQ0YsIGlu
dCAqTkNHLCBpbnQgKkVYU1RBVCk7CiB2b2lkIG91dHJlc18oaW50ICpuLCBpbnQgKml0ZXIsIGRv
dWJsZSAqcmVzLCBkb3VibGUgKm1mbG9wcywgaW50ICppbmZvKTsKIHZvaWQgZnVuYyhpbnQgKmR1
bW15LCBkb3VibGUgKmluQiwgZG91YmxlICpyZXMpOwogZXh0ZXJuIGRvdWJsZSAqQTEsICpBMiwg
KlYsICpWViwgKlc7CgogaW50IHRlc3QoaW50IE4sIGludCBOTltOKzFdLCBpbnQgTk5OLCBpbnQg
TWF4UmFuaywgaW50IE5FTCwgZG91YmxlIEFbXVtORUxdLAogICAgICAgICAgaW50IE1BU0tbTi0x
XVtORUxdLCBkb3VibGUgQltNYXhSYW5rXVtOTk5dLCBpbnQgTWF4SXRlcjEpCiB7IGludCBSYW5r
LCBsZW49Tk5bTl0tTk5bTi0xXTsKICAgZG91YmxlIFJlc1syXTsKCiB2b2lkIE1pbmltaXplKGlu
dCBNLCBkb3VibGUgQUFbTV1bTkVMXSwgZG91YmxlICpCLCBkb3VibGUgVltNYXhSYW5rXVtORUxd
LCBpbnQgSW5pdCkKIHsgaW50IE5DRiwgTkNHLCBFWFNUQVQ7CgogICBlbm1pbl8oTk4rTi0xLCBm
dW5jLCBmdW5jLCBvdXRyZXNfLCBCLCBCK05OW04rMV0rMSwgJk5DRiwgJk5DRywgJkVYU1RBVCk7
CiAgIGZ1bmMoTk4rTi0xLCBCLCBSZXMpOwogICBSZXNbMV09Y2JsYXNfZG5ybTIoTkVMLCBWW1Jh
bmtdLCAxKTsKICAgcmV0dXJuOwogfQogICBpbnQgTT1sZW4sIGo7CiAgIGZvcihSYW5rPTA7IFJh
bms8TWF4UmFuazsgUmFuaysrKQogICAgIGZvcihqPTA7IGo8TWF4SXRlcjE7IGorKykKICAgICAg
IE1pbmltaXplKE0sICh2b2lkKilBMiwgQltSYW5rXSwgKHZvaWQqKVYsIGopOwogICByZXR1cm4g
UmFuazsKIH0KCg==