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
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
;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).