🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Eric Valette Mon, 14 Jan 1991 13:02
AT&T C++ 2.0 efficacious?
#786
Author: Eric Valette
Date: Mon, 14 Jan 1991 13:02
122 lines
2698 bytes
/*
 *	The following small c++ program has been translated to c using
 *	one Cfront 2.0 port. If you look at generated c code, you will
 * 	see that the code generated for inlines member functions is different
 *	for local variables and global variables (it is also true for global
 *	pointer)
 *
 *	Could someone explain me why ?
 *	
 *	PS: I think that the code is ineffective. Tell me if I am wrong.
 *	
 */

/*
 *
 *	Sorry to post it in these news group, I have already post it in 
 *	comp.lang.c++ and got no answer.
 */


/*	Small C++ program
 * --------------------------------------------------------------------------
 *
 */

class example {
private :
	int a;
public :
	int getVal() {return a;}
	void setVal(int val) {a = val;}
};

example glob;

void f() 
{
	example loc;
	int a = 1;
	int b = 2;
	int resu;
	
	loc.setVal(1);
	resu = loc.getVal();

	glob.setVal(1);

	resu = glob.getVal();
}

/*
 * Generated C code
 * -------------------------------------------------------------------------
 * 
 */

/* <<AT&T C++ Translator 2.00.02 08/25/89>> */
/* < kt34.cxx > */

char	*__vec_new ();

char	__vec_delete ();
typedef int	(*__vptp)();
struct __mptr {
	short	d; 
	short	i; 
	__vptp f; 
};

struct example {	/* sizeof example == 4 */

	int	a__7example ;
};

struct example glob = { 
	0 };

char	f__Fv ()
{
	struct example __1loc ;
	int	__1a ;
	int	__1b ;
	int	__1resu ;

	struct example *__0__Xthis00a3jpkk ;

	struct example *__0__Xthis0020bpkk ;

	__1a = 1 ;
	__1b = 2 ;

	( ((&__1loc )->a__7example = 1 ), (((char )0 ))) ;
	__1resu = ( (&__1loc )->a__7example ) ;

/*
 * for local variables the c code is what I expected.
 */
 

	( (__0__Xthis00a3jpkk = (&glob )), ( (__0__Xthis00a3jpkk ->a__7example = 1 ), (((char )0 ))) ) ;
	__1resu = ( (__0__Xthis0020bpkk = (&glob )), ( __0__Xthis0020bpkk ->a__7example ) ) ;
/*
 * Why two copies? Why into two differents local variables?
 */
}







--
   __                 
  /  `                   	Eric Valette
 /--   __  o _.          	Chorus Systemes
(___, / (_(_(__         	6 avenue Gustave Eiffel
				F-78182, St-Quentin-en-Yvelines-Cedex

Tel: +33 (1) 30 64 82 00	Fax: +33 (1) 30 57 00 66
E-mail: ev@chorus.fr		or ev%chorus.fr@mcsun.EU.net
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads