public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* Re: Internal Compiler Error 252
[not found] <001701bece6e$55cbda20$17028a18@anthony.accesscable.net>
@ 1999-07-16 0:31 ` Martin v. Loewis
0 siblings, 0 replies; 6+ messages in thread
From: Martin v. Loewis @ 1999-07-16 0:31 UTC (permalink / raw)
To: anthony; +Cc: egcs-bugs
> YMain.cpp:222: Internal compiler error 252.
> YMain.cpp:222: Please submit a full bug report to
> `egcs-bugs@egcs.cygnus.com'.
Thanks for your bug report. gcc-2.95 19990701 compiles this just fine,
so it appears that the bug has been fixed.
Regards,
Martin
>From martin@mira.isdn.cs.tu-berlin.de Fri Jul 16 00:57:00 1999
From: "Martin v. Loewis" <martin@mira.isdn.cs.tu-berlin.de>
To: khaley@bigfoot.com
Cc: khan@xraylith.wisc.edu, egcs-bugs@egcs.cygnus.com
Subject: Re: Wrong delete being called.
Date: Fri, 16 Jul 1999 00:57:00 -0000
Message-id: <199907160749.JAA00745@mira.isdn.cs.tu-berlin.de>
References: <4.1.19990714001252.009455a0@pop.mail.yahoo.com>
X-SW-Source: 1999-07/msg00604.html
Content-length: 1149
> I have a base class with operator delete declared private. The destructor
> of a derived class tries to delete a pointer held by the base class but it
> can't. The compiler reports that operator delete is private which is true,
> however it is not the delete that should be called.
Thanks for your bug report. Please note that the compiler also reports
the error if you write
~TPointer() {}
The problem is not deleting P, but deleting a TPointer instance. To
delete a TPointer instance, the appropriate delete operator must be
found. Since the base class has a delete operator, it is the one to
use. Unfortunately, the delete operator is private, so it can't be
used.
This shows up in the TPointer destructor, because in g++, the
deallocation functions are called in the destructor (to correctly
support virtual destructors).
There is a slight bug in g++ here: It should complain only when
somebody allocates or deletes instances of TPointerBase or
TPointer. This does not happen here, so it shouldn't complain.
As a work-around, it seems that you'll have to remove the private
operator delete when compiling with g++.
Regards,
Martin
>From max@takefive.co.at Fri Jul 16 01:47:00 1999
From: Max Weninger <max@takefive.co.at>
To: egcs-bugs@egcs.cygnus.com
Subject: Bugreport
Date: Fri, 16 Jul 1999 01:47:00 -0000
Message-id: <199907160847.KAA02563@extreme.takefive.co.at>
X-SW-Source: 1999-07/msg00605.html
Content-length: 2189
Hi,
I discovered a (in my opinion) bug in the latest gcc-2.95 prerelease.
-------------------------------------------------------------------------------------
Compiler Info:
Reading specs from /opt/gcc-dev/lib/gcc-lib/alphaev56-unknown-linux-gnu/2.95/specs
gcc version 2.95 19990712 (prerelease)
--------------------------------------------------------------------------------------
Source Code:
#include <iostream>
enum EFlags {
eFirst =0x00001000,
eLast =0x80000000
};
enum EFlags1 {
eFlags1 = eFirst << 11
};
enum EFlags2 {
eFlags2 = eFlags1 << 1
};
enum EFlags3 {
eFlags3 = eFlags2<< 7
};
enum EFlags4 {
eFlags4 = eFirst << 19
};
int main( int, char **)
{
cerr << eFlags3<< endl;
cerr << eFlags4<< endl;
}
----------------------------------------------------------------------------------------
Compile options:
g++ shift.C
----------------------------------------------------------------------------------------
Description:
extreme /tmp/test> ./a.out
-2147483648
2147483648
Why is eFlags3 negative ?
If you remove the eLast Flags from the EFlags enum
enum EFlags {
eFirst =0x00001000
};
the result is
extreme /tmp/test> ./a.out
-2147483648
-2147483648
No both results are negative
---------------------------------------------------------------------
System Information:
Linux extreme 2.2.5 #4 Thu Jun 17 18:18:13 CEST 1999 alpha unknown
RedHat 5.2 on a 21164a 600MHz Alpha
----------------------------------------------------------------------
Regards
Max
--
_______________________________________________________________
\
o/\_ DI Max Weninger
<\__,\ Email (max@takefive.co.at)
">. |
` .-| TakeFive Software - Jakob-Haringer-Str. 8
. \ A-5020 Salzburg - AUSTRIA
. \ Tel: +43 662 4579150 - Fax: +43 662 4579156
.-|
_________._|____________________________________________________
^ permalink raw reply [flat|nested] 6+ messages in thread
* Internal compiler error 252.
@ 1999-06-30 23:07 Mike Danylchuk
0 siblings, 0 replies; 6+ messages in thread
From: Mike Danylchuk @ 1999-06-30 23:07 UTC (permalink / raw)
To: egcs-bugs
The following code causes internal compiler error 252 in egcs-1.1.2 and in
the gcc-2.95 development snapshot from May 24th:
typedef char TCHAR;
void main()
{
try {}
catch( TCHAR* Err ) {}
}
You can avoid the error by using catch( char* Err ) or typedef char*
TCHAR_PTR; ... catch( TCHAR_PTR Err ).
I've included the details from egcs-1.1.2 below.
- Mike Danylchuk
miked@mpath.com
test.ii file:
-------------
# 1 "test.cpp"
typedef char TCHAR;
void main()
{
try {}
catch( TCHAR* Err ) {}
}
command line:
-------------
g++ -v -save-temps test.cpp
output:
-------
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/cpp -lang-c++ -v -undef
-D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -D__ELF__
-Dunix -Di386 -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__i386__
-D__linux__ -D__unix -D__i386 -D__linux -Asystem(posix) -D__EXCEPTIONS
-Asystem(unix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__
test.cpp test.ii
GNU CPP version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) (i386
Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/include/g++-2
/usr/local/include
/usr/i386-redhat-linux/include
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include
/usr/include
End of search list.
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/cc1plus test.ii -quiet
-dumpbase test.cc -version -o test.s
GNU C++ version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
(i386-redhat-linux) compiled by GNU C version egcs-2.91.66 19990314/Linux
(egcs-1.1.2 release).
test.cpp: In function `const class type_info & __tfc()':
test.cpp:7: Internal compiler error 252.
test.cpp:7: Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'.
test.cpp:7: See <URL: http://egcs.cygnus.com/faq.html#bugreport > for details.
^ permalink raw reply [flat|nested] 6+ messages in thread
* internal compiler error 252
@ 1998-12-18 2:25 Christian Templier STNA 7SO p5747 K224
0 siblings, 0 replies; 6+ messages in thread
From: Christian Templier STNA 7SO p5747 K224 @ 1998-12-18 2:25 UTC (permalink / raw)
To: egcs-bugs; +Cc: templier
hello ,
you can find bug report in this file
this file building is :
compress 1.cc
uuencode 1.cc.Z 1.cc.Z > 1.cc.Z.uu
include file :
------------------------------------------------------
begin 644 1.cc.Z
M'YV04LJ$(9/&S1D0<^"4&3,'A!DY;]J 4/#BQAPQ+^#4P5CF#,,6,5R$C/&"
M31J,'L>T,(DQ81@Y*N?4<=-BSALV+]/,D>&BQHN.'WGF"&D#QHN$"^<H2 G"
M3ADY<]*\<0,"Z)P60HG" !$C1PX<,63 B $"A560(D6"D%.&C< Y95(HF%O&
MJ9LR;<JXH>-BS!@=())0-3-S#!VI5,&,F3J'#H@Q..<TI)-'X9>"9MZ , 'B
MRQ<Z9JJP09'BA X%=?7BU<O7KPZO, +IO/431@VCR/"2>-63E4Y$'W+J,$3
MM=W5>_O^A0T8BMLP<!%N;)/&<1B'==C@%E/G(%LX;^0XIJ,9S%GN9^8 &9/G
MC)LZ<_I&/.%BKN?[^//K_Y+Z;M[D8Z Q%T4J%&C@@0@FJ.""##;HX(,*@% @
M"!16:.&%&&9(87_(M8:&AB"&>&&!$3YHXHDHIKC@7"VTZ.*+,,8HXXPTUFCC
MC0KP<6$:9+"6AAEIC!'&85.)"!B'_WGX0DA&E4%2&C?D(&*(?.1X(1%#E@%"
MCR"P<4(9>- A1QB&(78A8#'4\(1A7X'P @@PY*!##3'H,,-64^99I8X6$E%;
M&D]I25UTUZGQ1AV^68BFFFSBX":<<M80&PTRY*FG C=FJNFFG,[(8J>;@H!$
M$E-0\804241111$@@+HIIJ[&*JNF*KPPUP@%058'ER+ 9$:97@HPJTS]6A&
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
MU-7R>Q !/W2ZTWHM9'R*4WR#@NRF&,%%T($.@G $P5)O(CH)PADZZ88>./_
MMY1^8\)3!NUS7_A&C#S9NW220"4J\U;$][?#76_MG;O^PKM_B)P.\#H8)CP?
M5"9%,F[TAG\D1'\&.#SW)G]U)$.1YW%OP",)$ 1SX 9&P!9:,D0QQWELX%M^
MH"^9EP %81+X\D,%]Q1# H 3HP)#M =LD41RH')7HQ,IL -]0$1_-X(W8X(&
MEX*^87$M^(*(HG(J,(,O9X/79#APHR5@IC,CPSQ!4&<CLU93L 3.<P04(@-!
MM#GXTH1B]@5-\ 2KA@)>"#-/6 1&$(5,,(7+8H5.@(4@(1<* (*#!U$(]1G0
ML0:7P51<9P<]4(8[ X52F"UM>(6B%3HA,S*K$WTZT%6T! 4@H!-((!!PT .(
M.#J+*'T%,8EA =^-X>"@P(6AWSN<H@?DXBD(TS2YXA%$ 20*(F4:(FGB(DF
MHXENP(F>F(13PRMW<0>;Y!:TH3;]8W(8!WL!1'QCYWF1Z ;5D0:WH1,>%(+J
MIXP](B9UX#X9^(G(V'G'UR-< QP,)080,1!"\G/2R(&2UXUEP!W[U(=E,7O5
MIF&WEVT,!@*ZAW4AY'O.=ES:.(W'1R9Z*(YO0([0X1CG&'@G9R%D<AC+5Q8
MM1GZQ ) M5)B%5(FX"LC%21#TH_HF) 5 I!;MQ"\AQ@H\) F$)$@\'T9-G)E
M(Y$J)503<9%L01!"0@>?V&T,Z&T(F(#@4X \V9,[.25^\D@5TFY(\VXMY),_
MN3OZMY0BLH Y>44.B([K]TJ\9A)L419]14B&)%TS9 )6&1<;&'CK%P:&0D&_
MF'HHT%>SU(JVU%LJ$)8A:0:B!6@_A'II4)?'%DU]AC<S]'IE(%IM64NW-$-Q
M^4=L\8F^D@;%J"4!U!A#$B3K9$ZK-D/S5%_R4F=,\%I%!)F'43_.!$WE-&B5
M&9K1=)D,DYE,P$.=20>1"9JM,TZC64W@%)OR1)D:5FBKB8.>*9GP=)NDV5N_
M.9N8J9N;B8/]LQ'_<XS^:'>/<1L3U!MIF09:.4-VF0 FD !XJ9>DU)>ME9V
M*5JHN6DF !=CT /CJ9I,(%JF29RK9@)M8)X]T)[I:9SL:9ON^9T+=9[A))OU
MJ9FB-9SCB9TBM! ](*"XJ9Z?&']1*978XY2\TY00JB$2FB%BI!!E9)1JQ!KP
M%I03&B(5^J$6 I4-2D RI$YHU1DYM$-?UC(A]5(=M2HM:H82EX9,($PS&C,@
MX%,KR@0Y2E9&!%"$Q1\5540)T*,_"D1$ND\%41U&BJ1@1F0_M*1? ))-2@=&
M*J1V1:4 ::0J"7U*:E!7DS5DX*4%!GZ;E@ A.0>?@34"T4]=:D1?6IA3:E!L
M@8^(8:1U^%I3NE.WP1]N8 =OD =EH*</Q:<S] 5^R@:;Q#4J8Z3L] 5&EU7
MI*97"JG*R#N*ZII)- >&VC"(JJ9WZ)ISH(<%P7=&.H_:1E66TFMX6B19BBU"
M\%5A-593>JH"29"-8:03*51 %%/5L:2IE "]6I&_*E.2.HYD4(Y8.B"].08)
M,*>;MJ9?< 9LP#2W446^\@:T81@C!4 H(S9!PXMEX(N.M$F0(8PX6:(PY*$B
MFB$A^JX2HI13TB/H02&.>I1KU*$/*J\@2J_^ZCL&Q*X.&JYC,S1B0B9I$R##
M\C/B2C4B8*_=(8P^M0-NDCLY17#N@CZ2H27WTHQ%\CNWDE,_,B"G8RS((CA<
M*"V"8RU3@"W:PBW> FGCHC<%PS?J0CF!0RV*4P0KN[/Q0CC^<C<O,S![LQ>3
M@SJBA#&9T[(_>S^?T[*7J(BE8[)6:[*Q@B2LH1P#LJX$6T<ELD+>H[4 4C])
M&;9?^VV?,BMLV[8R8B46PB,^ B0U:28A<B1'VQICL"0NT"1/$@,XD&7"LR=7
MDB5;HB5> B8)*X!4H2A<$0-^,@9M\B8Q4"<Q8 ,Z( -DX3V$VR=_$B@:!(T@
M4"AG<R:/&[F3^[@ZD"9S,EN<"RMN&[MNN[:RZR*B0BJF@BJJPBJU"R.PV[O
MFRDEE+8-V+7$J[:_Z[8@8 33LUQ4A0?0&[W0VRJ]JWD4@H@A!1@4$G<5XHK<
MLIFG0;W ^U.C5FK9);[ :[U5016L@8$8HKT7HKYZ@1#A<1A:<B;R2Q6#HB6D
MBRC@&B'*&[.L4@0AE6J%!%'%=$BF8DCH.ROJ*Z@\ L!L:S_3XS+'E2]/T 1-
M8$H7#%+/Q%H7/+L6,K]N81B ]+[Y6Q5C8'(P>+\5$KX5,K_[.[H@<):) L.6
M(L'*2TT:;(:"=;ZUY#)8$,*R&W?!>\2:,A?'JY,FBRL/RRMD*RRQL\0#Y*X!
M2R'Q^JY97"$2>Q :A$;ZRJ'\RD!7#*\ 6\;S.K!47#OFX\0'6S6+N[!CT+!N
M/*Y#T\7*T;!>N\8I8L57O,4?"L@^9XW_YQN$ 4)V.V]^'+""#*$DRL=99+!V
M7#6]^(O!(L<-JR_21X>'.JIYN(=\QP)3FXJ,R(JN&(ES@(OIHKT*X*HC.15D
M"%_3DRXWU<J>7*J@W(<H<,NFRH==%X>Q!ZS[I$\H(,R*F@8UQ0:T#%/(FJO+
M6I#%C*R+2LL10JUW^LHJM\S4.J9OVG,WM<UNJC4 Z<T30:57B@(VBJ-1JLWZ
M5*5CT,M,E\[RZ*+4?,S)#*B"2J@H /:O*B-BD8]LL\I4,N;NG-S8!;P)5_T
MQ3#WE5\.U5S]!5V=5<_G_%0?ILVXJJS,&LL735NCO(@2,SW(I5RYBP*PV(GI
MLC\%W:D]<*7.:!)PL7A^5[%SH<DZ (*CR!:E^-&UV(C8\HBHK,H -!&=<778
MS-&XM<RVG%"DVLM\AP(Z[0*&)R^)]Q2DH=3&3,S&/,T29\S.O-%;C<P\1<V=
M8:<BF76PK,UB&LYD0,ZMO-9DZLYK0,[FS(QT@,Z0I<[T''M<^LY[&,]Y/<]F
M6,_^K!?Y3'K\+''VS%/_K#("3=">R7.WI="T9U_XI5\036711=%VC=2SK-@9
M/9#/W!B>[034S-,X.F@C+3*G8M*I3(DIK0![L-+PT=)V_=+0*-.I1-.@2"W2
M]X&AV#?\@RMFH# ,\U%'\ 4,L]JY.X?;%5(*5S5RMIG,B\#'%:.L#5'.DV8^
M4#4@$-U'$"P76@9.$ 9YT7/1G5.X440C0++'H@#+C=VY2S)BF 5P=X-5Q*"0
M?"*+[*^-[)2";"QAD!V.<8('!X"'S+AE1#S_O90-_I./O-\-8CXU+3C25X=W
M9=-3C7@<9-7IPG]T(-M"&(,H<%!,_<FGVH<S?4V1.JE+%4L38=-*U]D?WGC[
M,^(J]]<V641] '8*P'+F/7(38> ^^-T+MW( UW*<T1 W!>) 6RT7EW$;)]MS
M< ?5$2!E@7%!DS:T_7)&Q#\)4(XLZ]LZ\%=T!:XSM <-$=TBT!F1/0<]8.9+
MX-U&F@#B*!!K,*P)T =&).9/+GU;-F-=QF"9?6:L<AIION8+U^9='N=RE5J[
M->C,9682[2]Z?N=AD.=USN=A#AUCSBR ;ERF)6.1CEZ(G@!J;N3>W>AN5@2C
M#ND11N=]A>F:WE><[N<V?5OD!>N\A>:HKNBK_N:.'F.\SEJR/D.TKN>W[NE_
M7N;&Q=R3[ER&[NNISN9NSJFUW>K0ONO27NG';N=94^LSM.S1D>O8=:8J]EWA
MY:.6MF3&?NK5ONC7;M##+JW>!5XEP^Z[[N[HU>9UGNR;WN?,;N[R0MGUU="8
M3>E5=NA]%>_!CNUP/MD$=O"7_= *'UW?#O"V+O#E;N'.CF)H2F"X1U[MSF6F
MWO# +@+2FI(A0X_;U@+=W>;1K>4:YP+6?-;"]N_AKNP<_^E3$.H@KV)4P&&M
M&#$E+^CH1>TIO_)#SV*M$O.J3O-<#M=O>ND['_"=WO%D_E?VWO1%SV,O1NS\
M;DWPOO3H#GT@X/5@92TO]O3>/?-2;O-4+\[O;/5XSO-9[_- GV,'#/8^YF5"
MEKTHK^J,+NQ_Q?<[UF.7 _A#EO%7O_%YW^R!7NJ,#V5F6.C>7O:$/^\L/?GG
M5?EA=OD7CV;^/NN//^X]+_F/SN^@[X1@7V;=OO!*O_FLOOHFW_I?2&:8+_NE
MC^RGO^=&). $3B&:S^9O#@)N4"0?.]0ROW!2;_/'K_-XCO5\CN,H<(0*P-M
M#G$Q[O$E=W(IA^0.%^1++MQ0V[1D_OU[$?[8#^Q%Z#4-4436C_V\;=/K!R*^
MU=N@K@,XIW.=RGA/1\0%BR%4XM[<BLMO>TS".8C^)J\>'$\29!.D@H" "])O
M-HCB"4 A9,'EGS-6QAQ@ HIP"E!!F(\>E?]LVA"@(%-D#_0HY",3V =Z %I
MZ)D4$6DE?=;/"O,^9R_\?#RZ,@-S(".B/M9G=&V?@I!*Q$0>	[X ;:-&IE
MK; 5&W !94/Y6#6D<7Z&596[<A\"!80W.B $ -(0.!1[X:HU/#\7&_J*GR,+
MIP[5_8BR< -Q((:!/D"/KJ2+)6A0FJ 8N TN@"6XG[+0-^I< C"")L8%D1$"
MUP.,$,R;&R#-!*+ &F1B.-T,J4E8#@6X@$DH%XB-'P1^/X36^4%'*/Q<H*]#
M=66#$!I"'X (34;^V'\G\*XQPA^R!E% &Z2!.W )S$&/QP2OU1U\@GJ0+3"?
M/EA;-"&L@7Q\#A)FP4GH BKA'FB%K] 'QD%9V.QJH1/,@^U'%_+!836FWL =
M&%;5;P"2N%#H @_@7""!W8_,.9&$,42"B ID(BR0$,9 )M #WZ .M(%RP T^
M'QTHY]KA//R!U6>[44$B6$2,(!)4@K2P#MI"/!@%Y<#R00'[T T(GU8XXYA.
M"N@!?TBN;)<DD"ZXX0L<A:4PM7F\<=C65F$P'!*1D!@:0V08#^4AFEJ&LY#,
M.<-;" T53S02/M7P&AHI/D<2(2(LE',I<?^M1#R8"U]B*K%^%M$;*@ (ED'T
MW\^;/A7H I4!TB/<C(CL,"(30IBMKPSR!LY*10$!\*$@' 0Q< 2%A';0BO:(
MK4%%6S%\ &&:LW_*Z/CU (+' _N*L"N(!W$5BB!W<?T@'D1DB\Q0V/5$W8;U
MA&%9$(D-#^L1" 4P(1*<L/&*V^$(IL+1U6^V5;>B#1F$*X( .WA#RH9-0!2_
MAC#:BD8W"JN1'+A&F(<1CL+S=PJ/(@6R0!B(-/ X;A,"^UB_0F,CB@/^,=F8
M(=*-TW ,&@HIO1':Z-]X8P,<7JWQ0;R) 8$6CX]1M$7-Z!G%-#XHVRK$R0$B
M-Q &&*F9L%.^U;4R"'"%GW0<V8'!8L8X03/%A F<@&(G6>J1R)J+94''I9F\
M8M$F8B5, -:/X)66TT(>BP C5%^MD Z2D6HU$)]@0U2%(2 BSI4J0!$;7NT+
M>M#GWJT[L6?RBD"=LWY=3O@ /_Q(%V_>JW(#+N _DH8 V1X)Y'N<;8;OW+E#
M#:-@7![)VW<-\D%JPQQG 'D>A4R/<X\,9,@YL'0 I(!TCP8R1"+([J+VC!Z*
M1'H.LJ] R!89\%YDB8N1<FU&UL@->2,]9(ZTBUS/!ZZ8KZ?[CEZI"Y(S9$A"
M/ G)YYQB[A@T'66'+ ]6(1[)8Y.1$#)DA:69G\+-M(;3Z2?GS 0L*8G4)OO)
MF[PH;:<3[C@C0A)!0("$$Q^RT54%VX?T<)_HBWT83T7"(!:Y)?%>7:L./2!&
M";:88:349%Z! G7R"[Q)'8<"Y&0[ TATDJUIRJE !O#D)C$# ZX;&JD^^2?Y
MV9.D=X.2U'T^0@>(QDS8&WVX)$NNR +8*+%>7X-G+U!2_B@CI>.:9!+H.((2
M+PXK+6G0&"%O2X#!$4$<C^75O.H1_ (!<@DKN3!Y QRC9?DXCCI@_8#+;(F-
MJE/*(G-<Z9 $;"$F.*";..3>^$1RH&.8RG9#Z\)2V6A4X:E%+ *665><96Z
M<E$BM$73:!Y-P+"/'<?ZX40>-\6\Y80C$-32EEC+Y\0&HA-#P4OUIULZ3&D)
M+LD.N/2*%C-/<A+JM)9FB$V[3MEI._65D[F76(^?P4X)(#RM3(\WH+Z2>1(M
M-HT^X::O%)\6 L[T>/T).-$F$["??B:90U#!Z2L5J#$@%\#<%:0#D1 PI0LP
MY^<LVNJ9)K[./%&(O(*7ZES/K!__DAWVE?VT)F& V)PA2[-LGDUP-_W^3M4T
M+J2D"6#-4Z<UUR3&I%PP(&^NS:^Y)E$ QBP!7"%OFDVY2#;#9IU+FX;3]+7-
MU&<U6^;@&0)9<R%LS<-%E/"FWO2:6C-Q_J7,61;^9N#4F^DB=\0 P;DV$2><
M6)NMD&QVM]$I.$&G2ZDMUV\AI( 5L +\( K83^FB!>05UMDZUZ8C](6,$V["
M&2<P-]VBY+2;(_-1\,Z]R3G-9ITKG*?S<').OYD\ >?R#)V?LW?6N5:8-E=G
MZ_R>3&!JPD[S-#MK)^Q<FKES=WY/[0GYV&:FZSAZTM<I3#[3>I1;RQ0T%6Q5
M>,2_,S_GBBQ<C54$6F[,:<F\).:V 0QFZ5#L$XQI@#3FQC00MJ(XVAUPF4#1
M$L8LF>=R_PVFM_1##A,LT6E&<_]=)^TT,D/H45P]WNDOV;7 -#/)W :E4PG
M@R:F=YE!CR+9^2$KS$C9OYTY0\R3#@6:'RP_S9"O^4/)7-#,3[]E/Q71_8<T
M:5,"6)I+]"B^T$U3A-H '/@"86D[?DG(0F<V$Q&H J*$DJP3 OEC=)1X]$YH
MLL_YAKP",K/#Q4R>U/.1L(#P=#._YAR]F>AS5=)%-?DG<:*0W)4K[#ZB1Q0@
MEW3:>@0!QND+2!4IT#?.(LU41C>07&(>&2J6^HJ_+ LG)UWXT1]B_0)IG:,#
M5A2+MLLUF46-"*=K"]$!S/W!4(HO\THA;1<S\>_(I0JZ0.$H*+VB88D%U-&;
M6327)@O8EPES5R[,[,<:'Z@(A)@%U'E1#\!P=O+.VF$H[JB!JC%C"D$K')D3
MES:MF:J=O:/+FB:\_";148MVQS )'LGD>&1]]6BY60N.XE% 2K4XCZU0/4+$
M@2'+3%O#BX\>3]>!&"#))>?"'H"%\'!-74:T81(SS#*TAR=Q^N3#ZR,$N8^
MQ"W]4 [D@2_7"EUAV[&,9^/7] +B<V@8/(QB%-P""K$%! @;Z)$E(6OLO.)
MR'LH\DQD@_F15U+/X;CT2"0A'Y^LD+PLEW4='P P49V)PT.X+,7]LA: ]U!I
M&6AX)%&@9M0R8!.582Q,%QP5K6'(O:@:^\J!C"\3CZ%5O/V"*#N+HAQ"-+57
M;KR;2E/%VI_R1@"M#/" G]K4=*H=:*0^U:Q=R);H?N .ZH,K; NI-3:AE;!
M4=OY:M!,+B95C(H9F6I!A8-/M:SMQVLF5>FJ+JRJ=_4C0LUA2 DIZAZ]J&1D
MH&K4PTH/3RI4E:L=E:JNPIB(#;/?WTF6^?2D+LL5&5:;)0!MF-3T0!#0:GE
M1]<VA:9=YP-.T]AJ/B1H6Z&@M_6BOAUO*H+B99B+A]+Q[W!',/D=QR0(*)/H
M=-NHTVG33JG .Y4A\?1*'5*+EM3N*6L51:F50?)3%_E/G6I ):P$U:3Z3X1J
M4!5J$*00"?&A3H^(.E'5(%VTJ$JUL&Y4T-I8X6)(/3\DE;,RHDWJ4W6DO2N1
MJ^JE[M.8^E5C4&OM5/W4B+!5%.?+[ #M!#I1-80X5@]76OVB)*RL]I4-8E:S
MH5\%+$I4K&R*L6I8T6JD2&LL[9)J2MBI/O^Y6A?E@X4/SK*8QM9JRAV3Z<0$
M22HVD5V(@1/#=H]4Y3M,:;=24UMQ<BAHF3B(-LTD1:1BU5)D4D:J24T3(]&D
M(=$#X$+"6&S92@%8/TPI*C<E8#5')ZFB\,O7J@":K$T#LCB/)$79@))FZ<!-
M67F<H25168ND936239)M">D&%@'GT5&*R!WP&FZA+/39FA0@O:Q.,:O*[,O5
M2S(;US:E5.R4$:ELN "<<]5B:2>5 SDV@.Y8V8I,:2M5N995P<B&$"0K;B (
M;(17TS(J= DMP194AAYH"H>B(9 1QS"_%@.B: @9Q*4IQ\BD_#S6.KI60B)I
MP%J(F;CP #9#?E_BY\ !Z "%E-TZ+6Z ?;<E$2;L$#)&N$2.,$A3 7&Y6JC
M VV0 ]2!&>&+:>L;9H*6,&I253KXAG#+L:+#]E"RQK2W/E+CF.M4K=;IIC3T
M.1[79"-.F:N8%"7/]9S>OG1ZP:CK9G&G:92LECCM.D^YZRSSKC86O&Z]>BHK
M>4N$':2@[,R^0&/Y(4FK$7*13W%"X 6=$!6*1!2;""*KO([(&@A)1ZQF9:KJ
MM2W"0B"XW>"K2)6O3H"^6M9\N<+R*T'-L(C!H\:T@Y@0^65)=:H$%D1"R94:
M\A LH;.2L:[!4@5>V2Q=I&]Q95+56':<>.K/T*K*")")E ALE" 5_> 64QS
MC:ZOZL)D)=HVFES$A)UNLI:%6BDAJH*:K2VJ%.]Z6,#X0]PNUK"&>@[O.D*)
M6W31ZV;-N<P0Z4Z%#2O38NG@!;''\+(:W<<+=3TKB@U)<Y7%&A$7:TI-JYC]
MKGA1* I0ASE;#>BI/5S?:.Z*W%:+;Q]H!-VWS@E<RMUPI-$*$G/< RDW=W0B
MA1 _( )M4+;LMDM<!\=+:Q=KG)T*FO&;RDMD6=@"U: J [03688V7?4".^2Q
M=)MK='0]6:LV)[.:FM6C(M9/_LM J2,1GZ-1?#^&5@X9K(?J &K-W;PXM_.N
MU[ZR<Q?J1_JY%C?H]I6W&V*%"'YEOOMU/V9*@*1TI>#B:;H!%O*^1[AK8*5D
MCQ2O#+81UA:C&@C5%Y^JEPH SE[($O<IWQD+ &=Q#51ZM=[;&"3D#%G!=;<@
M]8"PELPN(0I^4TE2] (11RAX02)E+8: -Y[F5*'JAWH &6H9KB\,,0Q^&0C)
M+J3%9]?7!Z3=M=LWP"RC,FS7MT78H V<5X\JL;'"4)A0'2C-I-S6[A9FA9H7
M 9O8Q/K6%+"H9, Z.%%MW]'6?>NI'R2]/\01PE@A?.*":H4-D$?8\NT,)6P?
M)W#F+:OW# L3*BE,AM7N6H&JU?>P:>%3VH4!+QA6Q$QU"J^5+2QAYS"S KK!
M-..F7C:[>KUEZU6F0PTDS=Z,67L':,=41DXV(+%@@]0T@^_H@@/$M]H:WXZ@
M)9)ON&6^+!#T8K/H*W$+X!,VNST"(FIBMKL9.,/$92HB%R)Z7R;L2%THMDFP
ML];?3H6-"F]#2)T#N_DH .\ \_L":3!/J7,+B3&1WQ*\!E@ #.:^@I4NN@5M
MW'U([K)!=287_B5>/6Q$.'":BZ?=&#%(8XGH) MO/M8)^WCCS=2!*0=)\:CE
ML;G#Q]96B=6.<BLKUF_Y]N^\8G[K\?PK\^F_[S7[B%3A9G^/3^/-K$MU#=?#
M-ELAA=U:#*]R$)M(U*&+ @XP2M:ODA=#>F379GX*@M-5R9YUKT8\JJMBK"YS
MP;J]3NO>V)>#]R1K2,2\@_4F$U2@[#\_J_,-O='0P[78PRL32R^SA+"O-8CX
MUFH!+O<BA>@YLJTD.R=AEY,I;U5MA6_NZ<Y<-@P*=R7!.[ M+\%BX @C?+*A
MP!S%Q+2*C.5PN/\H,I)% ?"H]LBC:UR/[A$V$VZ#V2*^Y(V[?V7N/:2Y)MGF
MIF3(RUX1*\]EJ/%5',\%L@OQ F3J13X9-T*FDYD<8FOR22:Q1Y>_:MB=#('E
M\F5^JD*YWDE)HWPB%VS6_:.IN::B/HD+AI%Q&4"[C9@*-SSNV%<F!!Q \R.
M2]@K9'N4MD0=0#ZV%M?"A]'E%.H'0*JV9Z,YYXY<2&RI KA=OE+YUR"?"UEM
M7X+RG8!Z1TNXI@#AA6,H602Y91<OI%6(.&'],-\QQ(-9V.%%/_@4.^AX;K[9
M65!MYUT[ND)/&4A(;,$I\(;>,&L;PH!S. T!FW0-,E(5'(--$ _NH[;\#E:X
M%QX#<O6#PF[W_M59/ U1M%WL<GXP*L-FSCN7<6(YD\U)-P[#Q^]*)(?/7<6K
M>K7P%FC#=*"Q<X^XM0JZ(;B!:.L8IJV%=M )Z:98'C*0E:RMECB]"3K7BNC[
MK'C[<27^Q^[" %]BZ[N(EW$*, $FH,0-X0H+$0-QZ!O$8J@0&^(A'4-S1QMX
M USBY8:![HP0(.WH @[J>$O7EE;HF*6J:?9XQH:23. "^X0QL18V,6U91^_H
MC&NC+R$/]L>%=TP?MC&\FLKP)M; >1CR,><Z76VA<W20S@U:], >,G"=:^V1
MULY*P3[GH/L*C@4RR473QOB>&6=EG)P?<: ,R-M8-,^0@QS_(%]QUL\J P1<
MV&#: E\@P0LLT./Q4(A(G94K;^F]O$"X-;_FF]M4:[3GI=8NT5K_0:Y<6KOD
M0@Z*N^V:8&3;6VI=[S)-U;M&:1R*Z51N'&A&'LP4U$&/'HTK0O?2Z4F>-X5E
M=J?6@Q57:.RQ:8G9]C#FW*-)@+5"W!_2][BFJI[AEFZ)"O,C:$0]%]SI04Z=
M*W1=N-*UX;+3AVM=TRC(I;CLL9Z^QX6L3SLN:]%&W#$(*('G9C_ J.D) @DW
M7;(*:F)(:@DJ&=$WD);2ZYH\125$"K!/VRD\G23ZG+$KZ2!=80&RITI=>M?J
M2(F#D3-=%%0I9:X+85&N"B",N<,X;PEXO1>.JLBB$'L@0-M%PZS+"G4(N8^_
M!2[;Q<F\_Z+N_-N2 >^W8.I#7!<-VJ&FS-":"L#520U6^S98!H8#(@'$;(YB
MACSV">"[,5<MMY5MO9GUK\YUJI_Y_SI4T6P6]T#1+I6P!_VZ9LV,DV-D P:I
M#W@D1V#+C5(I\-3=D1KF B-E8[>U57.13 "'EC=D(!0@1?@H>XP>XX((/+=%
M[5O0=._V#7]RT#J!5,,O/R2EQ<&;\C#D!3(@%86(IZPH)]AT<]J!AFF9MMB(
M"RS !'C2C6<A;O! <,N"U"G_X)&8AM.S897 G[=.HN^M#!&Z\H3$S\<86?<(
M1MRI'3$S/M:.BDNT"*#C#QN>*I[%=A43>M@5M!:ZSH>LJ&[;5F?3O72FTW0;
M)&"6!6(,[T5M>.OW9L"8EIH+!VF#3*Y#^%W%UB6WA(_5IXV\U^^R47-63N]:
MU,&=!)D=!@_>SRT-HCH30UI- @W,;YP!_^=1VC#40UDT>%36Z4JTO(U+DQ-
M>4DU 5+<M+O&B$O81 /U;5%3R+QJ\KMH "F:=Q2/& 6[BH.Q,.="?_1? [&
M+F0RSMM@ZZ@]Q3]67U/I;2E-U[4KQM=O5HYG)=(0<(UK#E6N7Y)C-U>$^[$+
M)<.M%@[WHY3L$9U=[=IV5=G N7"W[/IX'VVQV,X@EH<V$&/-D[9Q;UM)T>L(
M+753(Z5Y!JE+3KT8EP :P+SM6_:VW/;;=/LH_I7 /;@7\BI'W%YRG5(;5!(>
M'S<2%C,1US(GU//JOJGRY9[+F=OG;FX[+)/K*]^VR3.:J9IO&4F;5;=M3JA1
M]T!V/:+G868W>JG=POE^!VV_%F1AV9R<YNX86>D3N%TAIOG\OM8^^"]"Y?8=
MS;OU;;;1[EP'X^$]W)+S=P O _S;1_EO2.S/TRKU CH'/ :3MIG&/ZGX+6_C
M;GS'PO&)'"P^8[F$<*V8]6[DW)M-*SIHS$9]')R>Z%F-B!F;V.YNB6TYYXZ'
ML!1)4:#XWC"E.GR(01$5# +%Q U%PBP;1C,QHN\W=V08,2H)')+GBC/>=$CY
M'0"YHA3+2)E<)J7@EK3A]WF[25*Y20#.H"H+UWM/LG#U"RASLWR\;LE%F>Z^
MZ$+]1G.%9,=+75BN,ZB^)J6ZG:3J9T=,7/5.^2O[Y67EZE*[T7WU;5=9NJH4
;YW3\/#VB;'IZT2*Y@^77LISC4O)0/,8?>BH!
end
^ permalink raw reply [flat|nested] 6+ messages in thread
* internal compiler error 252
@ 1998-12-18 2:25 Christian Templier STNA 7SO p5747 K224
0 siblings, 0 replies; 6+ messages in thread
From: Christian Templier STNA 7SO p5747 K224 @ 1998-12-18 2:25 UTC (permalink / raw)
To: egcs-bugs; +Cc: templier
Reading specs from
/7sb/pub/egcs-1.1.1/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.91.60/specs
gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release)
evenement.cc: In function `const class type_info & __tfUl()':
evenement.cc:990: Internal compiler error 252.
evenement.cc:990: Please submit a full bug report to `egcs-bugs@cygnus.com'.
_____________________evenement.ch
/******************************************************************************
** evenement.ch **
******************************************************************************
------------------------------------------------------------------------------
| identification : evenement.ch/1.0/e1/i79 |
| Date de l'extraction : 15Oct98 / 09:51:30 |
| Derniere mise a jour : 15Oct98 / 09:50:42 |
------------------------------------------------------------------------------
--------------------------------- HISTORIQUE ---------------------------------
---------------------------------------------------------------------------*/
#include "projet.ch"
#undef CLASS
#define CLASS ASN_TYPE(SYSTEME,Evenement)
#undef CLASS_NAME
#define CLASS_NAME "SYSTEME Evenement"
#undef DERIVED_CLASS
#define DERIVED_CLASS OBJECT_BASE
#ifndef EVENEMENT__CH
#define EVENEMENT__CH
#include "language_object.ch"
#include "thread_machine.ch"
#include "ressource.ch"
#undef CLASS
#define CLASS ASN_TYPE(SYSTEME,Evenement)
#undef CLASS_NAME
#define CLASS_NAME "SYSTEME Evenement"
#undef DERIVED_CLASS
#define DERIVED_CLASS OBJECT_BASE
#undef IS_BASIC_TYPE
/***********************************************************************/
/** **/
/** **/
/** CLASSE DEFINITION **/
/** **/
/** **/
/***********************************************************************/
class CLASS : virtual public DERIVED_CLASS
{
public :
/***********************************************************************/
/** **/
/** **/
/** cut & bind member functions **/
/** **/
/** **/
/***********************************************************************/
virtual BOOL Cut
() ;
virtual BOOL Bind ()
;
/***********************************************************************/
/** **/
/** **/
/** Types Management **/
/** **/
/** **/
/***********************************************************************/
typedef Stype_heure_t HEURE ;
typedef Stype_delai_t DELAI ;
typedef Stype_delai_unite_t DELAI_UNITE ;
typedef Stype_heure_t ECHEANCE ;
typedef Stype_ulong_t SECONDE ;
typedef Stype_ulong_t MILI_SECONDE ;
typedef Stype_ulong_t MICRO_SECONDE ;
typedef Stype_ulong_t NANO_SECONDE ;
typedef Stype_evt_id_t ID ;
typedef Stype_res_nb_user_t USER ;
typedef Stype_evt_attr_t ATTRIBUT ;
typedef enum _PREDICAT { wait_signal , send_signal } PREDICAT ;
typedef Stype_boolean_t EXCEPTION ;
typedef Stype_boolean_t IN_BROADCAST ;
typedef enum _STATUS { eX_OK
= 0 ,
eX_WAIT
= 1 ,
eX_INITIALISATION_IMPOSSIBLE
= 2 ,
eX_DEJA_INITIALISE
= 4 ,
eX_NON_INITIALISE
= 7 ,
eX_DESTRUCTION_IMPOSSIBLE
= 14 ,
eX_RESSOURCE_GLOBAL_NON_INITIALISE
= 49 ,
eX_NB_RENDEZ_VOUS_IMPOSSIBLE
= 50 ,
eX_RESSOURCE_RECEPTION_NON_INITIALISE = 51 ,
eX_RESSOURCE_THREAD_NON_INITIALISE
= 52 ,
eX_RESSOURCE_THREAD_ACK_NON_INITIALISE = 53 ,
eX_ERREUR_ACTIVATION_EVT
= 54 ,
eX_INITIALISATION_EVENEMENT_IMPOSSIBLE = 55 ,
eX_INITIALISATION_EVENEMENT_ACK_IMPOSSIBLE =56,
eX_DELAI_NON_CALCULER
= 57 ,
eX_UNITE_DELAI_INCONNUE
= 58 ,
eX_ERREUR_SYSTEME
= 59 ,
eX_NON_IMPLEMENTEE
= 60 ,
eX_PARAMETRE_INVALIDE
= 61
} STATUS ;
typedef enum _attendre_exception
{ dELAI=0 ,
aUTRES=1 } ATTENDRE_EXCEPTION ;
/***********************************************************************/
/** **/
/** **/
/** Object Management **/
/** **/
/** **/
/***********************************************************************/
friend ostream & operator << (ostream & s , const CLASS & value) ;
virtual ostream & PrintOn(ostream & s) ;
virtual STATUS getStatus() const ;
virtual Stype_boolean_t isInit() const ;
virtual STATUS exception_rdv() ;
virtual STATUS desabonner_rdv() ;
virtual STATUS abonner_rdv() ;
virtual USER user_Number() const ;
virtual STATUS attendre() ;
virtual STATUS attendre(DELAI & delai , DELAI_UNITE unite ,
ATTENDRE_EXCEPTION type_exception = aUTRES ) ;
virtual STATUS reserver (RESSOURCE::AGAIN
isAgain=RESSOURCE::storeAgain) ;
virtual STATUS liberer () ;
/***********************************************************************/
/** **/
/** **/
/** constructor function **/
/** **/
/** **/
/***********************************************************************/
virtual void AsnFree () ;
virtual ~CLASS() ;
inline operator CLASS *() {return(this);} ;
inline operator CLASS &() {return(*this);} ;
#define EVENEMENT_DEFAULT_TASKING 2
#define EVENEMENT_MODE (EVENEMENT_DEFAULT_TASKING -1)
CLASS(USER nb_task_in_rdv=EVENEMENT_DEFAULT_TASKING,
OBJECT_BASE::IN_HEAP isHeap=OBJECT_BASE::inHeap) ;
CLASS(CLASS & ref ,
OBJECT_BASE::IN_HEAP isHeap=OBJECT_BASE::inHeap) ;
#include "new_delete.ch"
private :
virtual STATUS initialiser () ;
virtual STATUS detruire () ;
virtual STATUS demarrer_broadcast () ;
virtual STATUS debut_rdv (ATTENDRE_EXCEPTION type_exception= aUTRES) ;
virtual STATUS ack_broadcast () ;
virtual int activer (ID &evt,PREDICAT &predicat) ;
virtual int ack_reception(ID &evt, RESSOURCE & res,PREDICAT
&predicat) ;
/***********************************************************************/
/** **/
/** **/
/** Delai Management **/
/** **/
/** **/
/***********************************************************************/
virtual STATUS heure_lire (
HEURE &heure);
virtual STATUS ajout_delai (
ECHEANCE *heure_ref,
DELAI delai,
DELAI_UNITE unite,
ECHEANCE *heure) ;
private :
static SECONDE SECONDE_NULL ;
static MILI_SECONDE MILI_SECONDE_NULL ;
static MICRO_SECONDE MICRO_SECONDE_NULL ;
static NANO_SECONDE NANO_SECONDE_NULL ;
public :
virtual STATUS calculer_delai (
DELAI & delai,
DELAI_UNITE & unite,
SECONDE &sec=SECONDE_NULL,
MILI_SECONDE &msec=MILI_SECONDE_NULL,
MICRO_SECONDE &usec=MICRO_SECONDE_NULL,
NANO_SECONDE &nsec=NANO_SECONDE_NULL) ;
/***********************************************************************/
/** **/
/** **/
/** Types Management **/
/** **/
/** **/
/***********************************************************************/
typedef enum _BOOL_EVENT { TRUE_EVENT , FALSE_EVENT } BOOL_EVENT ;
ID _evt;
BOOL_EVENT _evt_init;
BOOL_EVENT _evt_ack_init;
ID _evt_ack;
RESSOURCE _res_thread;
RESSOURCE _res_thread_ack;
RESSOURCE _res_reception;
USER _signal_envoye;
USER _signal_demande;
Stype_boolean_t _init;
STATUS _status;
USER _nb_task_in_rdv;
EXCEPTION _exception ;
IN_BROADCAST _in_broadcast;
PREDICAT wait_evt ;
PREDICAT wait_broadcast;
static RESSOURCE _res_global;
protected :
#include "new_del_decl.ch"
/***********************************************************************/
/** **/
/** **/
/** debug management **/
/** **/
/** **/
/***********************************************************************/
#include "trace.ch"
#include "debug.ch"
} ; /* end of classe definition */
#endif
#undef CLASS
#define CLASS ASN_TYPE(SYSTEME,Evenement)
#undef CLASS_NAME
#define CLASS_NAME "SYSTEME Evenement"
#undef DERIVED_CLASS
#define DERIVED_CLASS OBJECT_BASE
--------------------evenement.cc
/******************************************************************************
** evenement.cc **
******************************************************************************
------------------------------------------------------------------------------
| identification : evenement.cc/1.0/e1/i185 |
| Date de l'extraction : 11Dec98 / 11:16:21 |
| Derniere mise a jour : 11Dec98 / 11:15:54 |
------------------------------------------------------------------------------
--------------------------------- HISTORIQUE ---------------------------------
---------------------------------------------------------------------------*/
/*****************************************************************************/
/******************************************************************************
----------------------------- FONCTION xxxxxxxx ------------------------------
OBJET :
APPEL :
-------------------------------- PARAMETRES ---------------------------------
en entree :
en sortie :
en mise a jour :
------------------------- TYPE ET VALEUR DE RETOUR --------------------------
void
------------------------ DONNEES COMMUNES UTILISEES -------------------------
en lecture :
en ecriture :
en mise a jour :
--------------------------- COMMENTAIRES ANNEXES ----------------------------
-----------------------------------------------------------------------------
******************************************************************************/
#include "evenement.ch"
/***********************************************************************/
/** **/
/** **/
/** debug management **/
/** **/
/** **/
/***********************************************************************/
#include "trace.cc"
#include "debug.cc"
/***********************************************************************/
/** **/
/** **/
/** constructor function **/
/** **/
/** **/
/***********************************************************************/
#include "new_delete.cc"
CLASS::CLASS(USER nb_task_in_rdv,OBJECT_BASE::IN_HEAP isHeap) :
_exception(EX_NON) ,
_nb_task_in_rdv(nb_task_in_rdv-1) ,
wait_evt(wait_signal) , wait_broadcast(wait_signal) ,
_res_reception() , _res_thread() , _res_thread_ack() ,
_evt_init(FALSE_EVENT) , _evt_ack_init(FALSE_EVENT) ,
_signal_envoye(0) , _signal_demande(0),
_status(eX_NB_RENDEZ_VOUS_IMPOSSIBLE) ,
_init(EX_NON) , _in_broadcast(EX_NON) ,
OBJECT_BASE_CONSTRUCTOR(isHeap)
{_status=initialiser() ;
} ;
CLASS::CLASS(CLASS & ref ,OBJECT_BASE::IN_HEAP isHeap) :
_exception(EX_NON) ,
_nb_task_in_rdv(ref.user_Number()) ,
wait_evt(wait_signal) , wait_broadcast(wait_signal) ,
_res_reception() , _res_thread() ,
_res_thread_ack() , _evt_init(FALSE_EVENT) ,
_evt_ack_init(FALSE_EVENT) ,
_signal_envoye(0) , _signal_demande(0),
_status(eX_NB_RENDEZ_VOUS_IMPOSSIBLE) ,
_init(EX_NON) , _in_broadcast(EX_NON) ,
OBJECT_BASE_CONSTRUCTOR(isHeap)
{_status=initialiser() ;
} ;
CLASS::~CLASS()
{
#ifdef DEBUG_DESTRUCTOR
COUT << "CALL FOR DESTRUCTOR IN => " << GetTypeName() << endl ;
#endif
DESTRUCTOR_BODY() ;
} ;
/***********************************************************************/
/** **/
/** **/
/** default operator functions **/
/** **/
/** **/
/***********************************************************************/
CLASS::USER
CLASS::user_Number() const
{return(_nb_task_in_rdv) ;
} ;
Stype_boolean_t
CLASS::isInit() const
{return(_init);
};
ostream &
operator << (ostream & s , const CLASS & value)
{switch (value._status)
{
case CLASS::eX_OK :
{s << " _status=eX_OK " ;
break ;
}
case CLASS::eX_INITIALISATION_IMPOSSIBLE :
{s << " _status=eX_INITIALISATION_IMPOSSIBLE " ;
break ;
}
case CLASS::eX_DEJA_INITIALISE :
{s << " _status=eX_DEJA_INITIALISE " ;
break ;
}
case CLASS::eX_NON_INITIALISE :
{s << " _status=eX_NON_INITIALISE " ;
break ;
}
case CLASS::eX_DESTRUCTION_IMPOSSIBLE :
{s << " _status=eX_DESTRUCTION_IMPOSSIBLE " ;
break ;
}
case CLASS::eX_RESSOURCE_GLOBAL_NON_INITIALISE :
{s << " _status=eX_RESSOURCE_GLOBAL_NON_INITIALISE " ;
break ;
}
case CLASS::eX_NB_RENDEZ_VOUS_IMPOSSIBLE :
{s << " _status=eX_NB_RENDEZ_VOUS_IMPOSSIBLE " ;
break ;
}
case CLASS::eX_RESSOURCE_RECEPTION_NON_INITIALISE :
{s << "RESSOURCE RECEPTION -> " << value._res_reception ;
break ;
}
case CLASS::eX_RESSOURCE_THREAD_NON_INITIALISE :
{s << "RESSOURCE THREAD -> " << value._res_thread ;
break ;
}
case CLASS::eX_RESSOURCE_THREAD_ACK_NON_INITIALISE :
{s << "RESSOURCE THREAD ACK -> " << value._res_thread_ack ;
break ;
}
case CLASS::eX_ERREUR_ACTIVATION_EVT :
{s << " _status=eX_ERREUR_ACTIVATION_EVT " ;
break ;
}
case CLASS::eX_INITIALISATION_EVENEMENT_IMPOSSIBLE :
{s << " _status=eX_INITIALISATION_EVENEMENT_IMPOSSIBLE " ;
break ;
}
case CLASS::eX_INITIALISATION_EVENEMENT_ACK_IMPOSSIBLE :
{s << " _status=eX_INITIALISATION_EVENEMENT_ACK_IMPOSSIBLE " ;
break ;
}
default :
{s << "status non defini : " << value._status ;
break;
}
}
return(s);
} ;
ostream &
CLASS::PrintOn(ostream & s)
{DERIVED_CLASS::PrintOn(s);
s << *this ;
return(s);
} ;
CLASS::STATUS
CLASS::getStatus() const
{return(_status) ;
} ;
/***********************************************************************/
/** **/
/** **/
/** cut & bind member functions **/
/** **/
/** **/
/***********************************************************************/
BOOL
CLASS::Cut()
{BOOL result=FAIL;
RESSOURCE::STATUS cr=RESSOURCE::eX_OK;
RESSOURCE::AGAIN again ;
try
{cr=CLASS::_res_global.reserver(again) ;
switch (GetBackCount())
{case 0:
case 1 :
{if (cr==RESSOURCE::eX_OK) CLASS::_res_global.liberer ()
;
try
{result=this->ASN_BASE_CLASS::Cut();
}
catch (...)
{;
}
break;
}
default :
{result=this->ASN_BASE_CLASS::Cut();
if (cr==RESSOURCE::eX_OK) CLASS::_res_global.liberer ()
;
break;
}
}
}
catch (...)
{if (cr==RESSOURCE::eX_OK) CLASS::_res_global.liberer () ;
throw ;
}
return(result) ;
} ;
BOOL
CLASS::Bind()
{BOOL result=FAIL;
RESSOURCE::STATUS cr=RESSOURCE::eX_OK;
RESSOURCE::AGAIN again ;
try
{cr=CLASS::_res_global.reserver(again) ;
if (isInit()==EX_OUI) result=this->ASN_BASE_CLASS::Bind();
}
catch (...)
{if (cr==RESSOURCE::eX_OK) CLASS::_res_global.liberer () ;
throw ;
}
if (cr==RESSOURCE::eX_OK) CLASS::_res_global.liberer () ;
return(result) ;
} ;
void
CLASS::AsnFree()
{
/*
** wait end of evt using by calling thread
*/
try
{CLASS::STATUS status =CLASS::eX_OK;
status=reserver();
if (status==CLASS::eX_OK) status=liberer() ;
}
catch (...)
{;
}
/*
** function call by Cut and protected by global ressource
*/
_status=this->detruire();
this->DERIVED_CLASS::AsnFree();
} ;
/***********************************************************************/
/** **/
/** **/
/** Object Management **/
/** **/
/** **/
/***********************************************************************/
CLASS::STATUS
CLASS::initialiser ()
{ int cr=0;
unsigned long e_id;
/* CONTROLE DE L'INITIALISATION */
if (_init == EX_OUI)
return(CLASS::eX_DEJA_INITIALISE);
if (CLASS::_res_global.isInit()!=EX_OUI)
{_status=eX_RESSOURCE_GLOBAL_NON_INITIALISE;
return(_status) ;
}
if (_res_reception.isInit()!=EX_OUI)
{_status=eX_RESSOURCE_RECEPTION_NON_INITIALISE;
return(_status) ;
}
if (_res_thread.isInit()!=EX_OUI)
{_status=eX_RESSOURCE_THREAD_NON_INITIALISE;
return(_status) ;
}
if (_res_thread_ack.isInit()!=EX_OUI)
{_status=eX_RESSOURCE_THREAD_ACK_NON_INITIALISE;
return(_status) ;
}
/* CONTROLE DE L'INITIALISATION */
cr = Pthread_cond_init(&_evt,Pthread_condattr_default);
if (cr != 0)
{_status= eX_INITIALISATION_EVENEMENT_IMPOSSIBLE ;
return(_status) ;
}
_evt_init=TRUE_EVENT;
cr = Pthread_cond_init(&_evt_ack,Pthread_condattr_default);
if (cr != 0)
{_status= eX_INITIALISATION_EVENEMENT_ACK_IMPOSSIBLE ;
return(_status) ;
}
_evt_ack_init=TRUE_EVENT;
_init=EX_OUI;
_status= CLASS::eX_OK ;
return(_status);
} ;
/**********************************************************************/
/* FONCTION : heure_lire */
/**********************************************************************/
CLASS::STATUS
CLASS::heure_lire (
CLASS::HEURE &heure)
{
int cr;
cr = lire_heure ((&heure));
if (cr != 0)
return(eX_ERREUR_SYSTEME);
return(eX_OK);
}
/**********************************************************************/
/* FONCTION : calculer_delai */
/**********************************************************************/
CLASS::STATUS
CLASS::calculer_delai (
CLASS::DELAI & delai,
CLASS::DELAI_UNITE & unite,
CLASS::SECONDE &sec,
CLASS::MILI_SECONDE &msec,
CLASS::MICRO_SECONDE &usec,
CLASS::NANO_SECONDE &nsec)
{
switch (unite) {
case EX_DELAI_SEC :
sec = delai;
msec = 0L;
usec = 0L;
nsec = 0L;
break;
case EX_DELAI_MSEC :
sec = delai / 1000L;
msec = (delai % 1000L);
usec = 0L;
nsec = 0L;
break;
case EX_DELAI_USEC :
sec = delai / 1000L;
msec = 0L;
usec = (delai % 1000L) * 1000L;
nsec = 0L;
if (usec > 1000000L) {
(sec)++;
(usec) -= 1000000L;
}
break;
case EX_DELAI_NSEC :
sec = delai / 1000L;
msec = 0L;
usec = 0L;
nsec = (delai % 1000L) * 1000000L;
if (nsec > 1000000000L) {
(sec)++;
(nsec) -= 1000000000L;
}
break;
default :
return(eX_UNITE_DELAI_INCONNUE);
}
return(eX_OK);
} ;
/**********************************************************************/
/* FONCTION : ajout_delai */
/**********************************************************************/
CLASS::STATUS
CLASS::ajout_delai (
CLASS::ECHEANCE *heure_ref,
CLASS::DELAI delai,
CLASS::DELAI_UNITE unite,
CLASS::ECHEANCE *heure)
{
CLASS::STATUS cr;
CLASS::SECONDE sec;
CLASS::MILI_SECONDE msec;
CLASS::MICRO_SECONDE usec;
CLASS::NANO_SECONDE nsec;
CLASS::ECHEANCE *tmp_heure;
/* CALCUL DU DELAI SUIVANT L'UNITE */
cr = calculer_delai (delai,unite,sec,msec,usec,nsec);
if (cr != eX_OK)
return(cr);
if (heure_ref == NULL_PTR)
{CLASS::STATUS cr=heure_lire(*heure);
if (cr != (int) eX_OK)
return(cr);
tmp_heure = heure;
}
else {
tmp_heure = heure_ref;
}
heure_ajout_delai (tmp_heure,sec,msec,usec,nsec,heure);
return(eX_OK);
} ;
/**********************************************************************/
/* FONCTION : desabonner_rdv */
/**********************************************************************/
CLASS::STATUS
CLASS::desabonner_rdv()
{
int cr=0;
/* CONTROLE DE L'INITIALISATION DES ATTRIBUTS */
if (_init == EX_NON)
{return(CLASS::eX_NON_INITIALISE) ;
}
{RESSOURCE::STATUS cr_ressource=RESSOURCE::eX_OK;
RESSOURCE::AGAIN again=EX_NON;
try
{if ((cr_ressource=_res_reception.reserver(again))!=RESSOURCE::eX_OK)
{_status=eX_RESSOURCE_RECEPTION_NON_INITIALISE ;
return (_status) ;
}
if (_nb_task_in_rdv>0)
{_nb_task_in_rdv-- ;
}
else
{if (cr_ressource==RESSOURCE::eX_OK) _res_reception.liberer();
_status=eX_NB_RENDEZ_VOUS_IMPOSSIBLE;
return (_status) ;
}
if (_signal_demande<_nb_task_in_rdv)
{_res_reception.liberer() ;
}
else
{_status=demarrer_broadcast();
if (cr_ressource==RESSOURCE::eX_OK) _res_reception.liberer();
}
}
catch (...)
{if (cr_ressource==RESSOURCE::eX_OK) _res_reception.liberer();
throw ;
}
}
_status= CLASS::eX_OK ;
return (_status);
} ;
/**********************************************************************/
/* FONCTION : abonner_rdv */
/**********************************************************************/
CLASS::STATUS
CLASS::abonner_rdv()
{
int cr=0;
/* CONTROLE DE L'INITIALISATION DES ATTRIBUTS */
if (_init == EX_NON)
{return (CLASS::eX_NON_INITIALISE) ;
}
{RESSOURCE::STATUS cr_ressource=RESSOURCE::eX_OK;
RESSOURCE::AGAIN again=EX_NON;
try
{if ((cr_ressource=_res_reception.reserver(again))!=RESSOURCE::eX_OK)
{_status=eX_RESSOURCE_RECEPTION_NON_INITIALISE ;
return (_status) ;
}
_nb_task_in_rdv++ ;
_res_reception.liberer() ;
}
catch (...)
{if (cr_ressource==RESSOURCE::eX_OK) _res_reception.liberer();
throw ;
}
}
_status= CLASS::eX_OK ;
return (_status);
} ;
/**********************************************************************/
/* FONCTION : ack_reception & exception_rdv */
/**********************************************************************/
int
CLASS::activer(CLASS::ID &evt,PREDICAT &predicat)
{predicat=send_signal;
return(Pthread_cond_broadcast (&evt));
} ;
int
CLASS::ack_reception(CLASS::ID &evt, RESSOURCE & res,PREDICAT &predicat)
{int cr=EINTR;
while (predicat!=send_signal)
{cr = Pthread_cond_wait (&evt,res.get());
}
return(cr);
} ;
/**********************************************************************/
/* FONCTION : exception_rdv */
/* */
/* si le rendez vous est en cours d initialisation de deblocage */
/* l'exeption n'est pas prise en compte , le traitement de la fonction*/
/* se terminine par une exception sur la classe */
/**********************************************************************/
CLASS::STATUS
CLASS::exception_rdv()
{
int cr=0;
/* CONTROLE DE L'INITIALISATION DES ATTRIBUTS */
if (_init == EX_NON)
{return (CLASS::eX_NON_INITIALISE) ;
}
if (_in_broadcast==EX_OUI)
{throw this ;
}
/*
** emission evenement
*/
{RESSOURCE::STATUS cr_ressource=RESSOURCE::eX_OK;
RESSOURCE::AGAIN again=EX_NON;
try
{if ((cr_ressource=_res_reception.reserver(again))!=RESSOURCE::eX_OK)
{_status=eX_RESSOURCE_RECEPTION_NON_INITIALISE ;
return (_status) ;
}
_exception=EX_OUI;
if (_signal_demande!=NULL_DATA)
{try
{_status=demarrer_broadcast();
}
catch (EVENEMENT * evt)
{
}
catch (...)
{throw ;
}
}
if (cr_ressource==RESSOURCE::eX_OK) _res_reception.liberer();
}
catch (...)
{if (cr_ressource==RESSOURCE::eX_OK) _res_reception.liberer();
throw ;
}
}
return (CLASS::eX_OK) ;
} ;
/**********************************************************************/
/* FONCTION : demarrer_broadcast */
/**********************************************************************/
CLASS::STATUS
CLASS::demarrer_broadcast ()
{/*
** appel protege par la ressource res_reception
*/
int cr;
_signal_envoye++;
_in_broadcast=EX_OUI;
cr = activer(_evt,wait_evt);
if (cr != 0)
{_status=eX_ERREUR_ACTIVATION_EVT;
}
{RESSOURCE::STATUS cr_ressource=RESSOURCE::eX_OK;
RESSOURCE::AGAIN again=EX_NON;
try
{if
((cr_ressource=_res_thread_ack.reserver(again))!=RESSOURCE::eX_OK)
{_status=eX_RESSOURCE_THREAD_NON_INITIALISE ;
}
else
{
cr =
ack_reception(_evt_ack,_res_thread_ack,wait_broadcast) ;
wait_broadcast=wait_signal;
_res_thread_ack.liberer();
}
}
catch (...)
{if (_nb_task_in_rdv==(EVENEMENT_MODE))
{if (_signal_envoye>NULL_DATA)
_signal_envoye--;}
else
{_signal_envoye=NULL_DATA;}
if (cr_ressource==RESSOURCE::eX_OK)
_res_thread_ack.liberer();
_in_broadcast=EX_NON;
throw ;
}
}
if (_nb_task_in_rdv!=(EVENEMENT_MODE))
{if (_signal_envoye>NULL_DATA) _signal_envoye--;}
else
{_signal_envoye=NULL_DATA;}
_in_broadcast=EX_NON;
return (CLASS::eX_OK);
} ;
/**********************************************************************/
/* FONCTION : ack_broadcast */
/**********************************************************************/
CLASS::STATUS
CLASS::ack_broadcast ()
{/*
** appel protege par la ressource res_reception
*/
if ((_signal_demande==NULL_DATA) && (_in_broadcast==EX_OUI))
{CLASS::EXCEPTION lexception=_exception;
_exception=EX_NON;wait_evt=wait_signal;
activer(_evt_ack,wait_broadcast);
if (lexception==EX_OUI)
{throw this ;
}
}
else
{if (_exception==EX_OUI)
{throw this ;
}
}
return (eX_OK);
} ;
/**********************************************************************/
/* FONCTION : debut_rdv */
/**********************************************************************/
CLASS::STATUS
CLASS::reserver (RESSOURCE::AGAIN isAgain)
{RESSOURCE::STATUS cr_ressource=RESSOURCE::eX_OK;
if (_status==CLASS::eX_OK)
try
{if ((cr_ressource=_res_reception.reserver(isAgain))!=RESSOURCE::eX_OK)
{_status=eX_RESSOURCE_RECEPTION_NON_INITIALISE ;
return (_status) ;
}
}
catch (...)
{if (cr_ressource==RESSOURCE::eX_OK) _res_reception.liberer();
throw ;
}
return(_status);
} ;
CLASS::STATUS
CLASS::liberer ()
{RESSOURCE::STATUS status=_res_reception.liberer();
if (status!=RESSOURCE::eX_OK)
{return(CLASS::eX_RESSOURCE_RECEPTION_NON_INITIALISE) ;
}
return(CLASS::eX_OK);
} ;
CLASS::STATUS
CLASS::debut_rdv (ATTENDRE_EXCEPTION type_exception)
{CLASS::STATUS result=CLASS::eX_OK;
{RESSOURCE::STATUS cr_ressource=RESSOURCE::eX_OK;
RESSOURCE::AGAIN again=EX_NON;
if (_status!=CLASS::eX_OK) return (_status) ;
try
{if ((cr_ressource=_res_reception.reserver(again))!=RESSOURCE::eX_OK)
{_status=eX_RESSOURCE_RECEPTION_NON_INITIALISE ;
return (_status) ;
}
if (_signal_demande!=NULL_DATA)
{/*
** phase de deblocage du rendez vous avec ack pour
** liberation de la ressource reception par la bonne tache
*/
if (_signal_demande==_nb_task_in_rdv)
{CLASS::STATUS status=CLASS::eX_OK;
/*
** le rendez vous est atteint reveiller les autres
taches et sortir
*/
int cr=0;
status=demarrer_broadcast () ;
status=_status;
if (cr_ressource==RESSOURCE::eX_OK)
_res_reception.liberer();
return (status) ;
}
else
{/*
** le rendez vous n'est pas atteint , attendre prise
rendez vous
*/
}
}
else
{if
((_signal_envoye>NULL_DATA)&&(_nb_task_in_rdv==(EVENEMENT_MODE)))
{/*
** mode evenement avec signal arrive
*/
if (type_exception!=CLASS::dELAI)
{_signal_envoye--;
_res_reception.liberer();
return (eX_OK) ;
}
else
{_signal_envoye=NULL_DATA;
}
}
}
/*
** phase de d attente du rendez vous
*/
if ((_exception==EX_OUI)&&(_signal_demande==NULL_DATA))
{_exception=EX_NON;
throw this ;
}
_signal_demande ++ ;
result=CLASS::eX_WAIT;
_res_reception.liberer();
}
catch (...)
{if (cr_ressource==RESSOURCE::eX_OK) _res_reception.liberer();
throw ;
}
}
return (result) ;
} ;
/**********************************************************************/
/* FONCTION : attendre_ou_delai */
/**********************************************************************/
CLASS::STATUS
CLASS::attendre(CLASS::DELAI & delai , CLASS::DELAI_UNITE unite ,
CLASS::ATTENDRE_EXCEPTION type_exception)
{
int cr;
ECHEANCE echeance ;
/* CONTROLE DE L'INITIALISATION DES ATTRIBUTS */
if (_init == EX_NON)
return (eX_NON_INITIALISE) ;
/* AJOUT DU DELAI A L'HEURE COURANTE */
cr=ajout_delai ((ECHEANCE *)NULL,delai,unite,&echeance);
if (cr!=0)
{_status=eX_DELAI_NON_CALCULER ;
return (_status) ;
}
/*
** demande d attente
*/
{CLASS::STATUS status=debut_rdv(type_exception);
if (status==CLASS::eX_OK)
{return(status);
}
else
{if (status!=CLASS::eX_WAIT)
return (status);
}
}
/* ATTENTE DE L'EVENEMENT */
{RESSOURCE::STATUS cr_ressource=RESSOURCE::eX_OK;
RESSOURCE::AGAIN again=EX_NON;
try
{ECHEANCE date ;
if ((cr_ressource=_res_thread.reserver(again))!=RESSOURCE::eX_OK)
{_status=eX_RESSOURCE_THREAD_NON_INITIALISE ;
return (_status) ;
}
while (( (cr != ETIMEDOUT)
&& (cr != EINVAL)))
{Pthread_cond_timedwait
(&_evt,_res_thread.get(),(&echeance),&cr);
}
_res_thread.liberer();
}
catch (...)
{if (cr_ressource==RESSOURCE::eX_OK) _res_thread.liberer();
throw ;
}
if (_signal_demande>NULL_DATA) _signal_demande -- ;
try
{ack_broadcast() ;
}
catch (CLASS * rdv)
{if ((type_exception==CLASS::dELAI)&&(cr==ETIMEDOUT))
{throw &delai ;
}
else
{throw ;
}
}
catch (...)
{throw ;
}
if (cr != 0)
{switch (cr)
{case ETIMEDOUT:
{
throw &delai ;
break;
}
case EINVAL:
{_status=eX_PARAMETRE_INVALIDE;
return (_status);
break;
}
default:
{_status=eX_NON_IMPLEMENTEE;
return (_status);
break;
}
}
}
}
return (_status);
} ;
/**********************************************************************/
/* FONCTION : attendre */
/**********************************************************************/
CLASS::STATUS
CLASS::attendre ()
{
int cr;
/* CONTROLE DE L'INITIALISATION DES ATTRIBUTS */
if (_init == EX_NON)
return (eX_NON_INITIALISE);
/*
** demande d attente
*/
{CLASS::STATUS status=debut_rdv();
if (status==CLASS::eX_OK)
{return(status);
}
else
{if (status!=CLASS::eX_WAIT)
return (status);
}
}
/* ATTENTE DE L'EVENEMENT */
{RESSOURCE::STATUS cr_ressource=RESSOURCE::eX_OK;
RESSOURCE::AGAIN again=EX_NON;
try
{if ((cr_ressource=_res_thread.reserver(again))!=RESSOURCE::eX_OK)
{_status=eX_RESSOURCE_THREAD_NON_INITIALISE ;
return (_status) ;
}
cr=ack_reception(_evt,_res_thread,wait_evt);
_res_thread.liberer();
}
catch (...)
{if (cr_ressource==RESSOURCE::eX_OK) _res_thread.liberer();
throw ;
}
if (_signal_demande>NULL_DATA) _signal_demande -- ;
ack_broadcast() ;
}
return (_status);
} ;
/**********************************************************************/
/* FONCTION : detruire */
/**********************************************************************/
CLASS::STATUS
CLASS::detruire ()
{
int cr=0;
if (_signal_demande > 0)
{/* free reference with missing call on liberer function */
}
/* DETRUIRE L EVENEMENT */
if (_evt_init==TRUE_EVENT)
{cr = Pthread_cond_destroy (&_evt);
if (cr != 0)
{_status=CLASS::eX_DESTRUCTION_IMPOSSIBLE;
}
}
if (_evt_ack_init==TRUE_EVENT)
{cr = Pthread_cond_destroy (&_evt_ack);
if (cr != 0)
{_status=CLASS::eX_DESTRUCTION_IMPOSSIBLE;
}
}
if (_init == EX_NON)
return (CLASS::eX_NON_INITIALISE);
return (_status);
} ;
^ permalink raw reply [flat|nested] 6+ messages in thread
* Internal compiler error 252
@ 1998-08-09 10:25 David Mazieres
0 siblings, 0 replies; 6+ messages in thread
From: David Mazieres @ 1998-08-09 10:25 UTC (permalink / raw)
To: egcs-bugs
The appended program illustrates a bug in egs 1.1. The compiler
version I'm using is:
Reading specs from /usr/local/egcs/lib/gcc-lib/i386-netbsd/egcs-2.91.53/specs
gcc version egcs-2.91.53 19980808 (gcc2 ss-980609 experimental)
When compiling the program, I get:
% c++ null-bug.C
null-bug.C: In function `const class type_info & __tf?()':
null-bug.C:9: Internal compiler error 252.
null-bug.C:9: Please submit a full bug report to `egcs-bugs@cygnus.com'.
Note that compiling with '-ansi' makes the problem go away, as then
NULL (or __null) is just an int as it should be (though this
contradicts the NEWS file which claims __null should actually be of
type size_t--i.e. unsigned).
Thanks,
David
===
#include <iostream>
#include <typeinfo>
int
main ()
{
cout << typeid (NULL).name () << "\n";
return 0;
}
^ permalink raw reply [flat|nested] 6+ messages in thread
* Internal compiler error 252
@ 1997-12-05 4:35 Philipp Tomsich
0 siblings, 0 replies; 6+ messages in thread
From: Philipp Tomsich @ 1997-12-05 4:35 UTC (permalink / raw)
To: egcs-bugs
I think I just found a little bug in the compiler:
#include <stddef.h>
void main()
{
throw(NULL);
}
generates the message:
> in function 'const class type_info & __tf?()'
> Internal compiler error 252.
The code works as expected, when NULL is cast to void* explicitly [
throw((void*)NULL); ].
Yours.
Phil.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~1999-07-16 0:31 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <001701bece6e$55cbda20$17028a18@anthony.accesscable.net>
1999-07-16 0:31 ` Internal Compiler Error 252 Martin v. Loewis
1999-06-30 23:07 Internal compiler error 252 Mike Danylchuk
-- strict thread matches above, loose matches on Subject: below --
1998-12-18 2:25 internal " Christian Templier STNA 7SO p5747 K224
1998-12-18 2:25 Christian Templier STNA 7SO p5747 K224
1998-08-09 10:25 Internal " David Mazieres
1997-12-05 4:35 Philipp Tomsich
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).