This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
help me
- To: egcs-bugs at egcs dot cygnus dot com
- Subject: help me
- From: tabe at ecad dot ncos dot nec dot co dot jp
- Date: Fri, 17 Mar 2000 13:29:42 +0900 (JST)
- Cc: tabe at ecad dot ncos dot nec dot co dot jp
#include <stdio.h>
/*
hello.
dear egcs-bugs@cygnus.com.
I am japanese.
so poor English speaker.
I have 2 question.
Please hit
%g++ thi_smail.c -O -Wall
Please teach me reason.
*/
/****************************************/
/* HELP!!! PART1 */
/* */
/* diff result. */
/* gcc vs gcc -O */
/* g++ vs g++ -O */
/* why????? */
/* optimize trouble? */
/* C lang spec ?? */
/****************************************/
struct stag{
int val1 :3;
int val2 :3;
};
struct stag SR ;
void Why_ever_OFF(void)
{
if( ( SR.val1 & 4 )
&& ( SR.val2 & 4 )){
printf("ON\n") ;
} else {
printf("OFF\n") ;
}
}
static void help1(void)
{
int i ;
int j ;
for(i = 0 ; i < 10 ; i++) {
for(j = 0 ; j < 10 ; j++) {
SR.val1 = i ;
SR.val2 = j ;
Why_ever_OFF() ;
}
}
}
/****************************************/
/* HELP!!! PART2 */
/* */
/* why this warnnig ?? */
/* */
/* gcc -Wall => no warnnig. */
/* BUT. */
/* g++ -Wall => warnnig. */
/*
help.c:56: warning: value computed is not used
help.c:57: warning: value computed is not used
help.c:58: warning: value computed is not used
help.c:59: warning: value computed is not used
help.c:60: warning: value computed is not used
help.c:61: warning: value computed is not used */
/****************************************/
struct tag {
unsigned val:8 ;
unsigned char val2 ;
} ;
static struct tag R ;
void help2(void)
{
struct tag *p ;
/*----------------------WHY WHY WHY ----------------------------*/
p = &R ;
p->val = 0x7F ; printf("%x\n",p->val) ;
p->val++ ; printf("%x\n",p->val) ;
p->val-- ; printf("%x\n",p->val) ;
(p->val)++ ; printf("%x\n",p->val) ;
(p->val)-- ; printf("%x\n",p->val) ;
(p)->val++ ; printf("%x\n",p->val) ;
(p)->val-- ; printf("%x\n",p->val) ;
/*----------------------OK OK OK -------------------------------*/
p = &R ;
p->val2 = 0x7F ; printf("%x\n",p->val2) ;
p->val2++ ; printf("%x\n",p->val2) ;
p->val2-- ; printf("%x\n",p->val2) ;
(p->val2)++ ; printf("%x\n",p->val2) ;
(p->val2)-- ; printf("%x\n",p->val2) ;
(p)->val2++ ; printf("%x\n",p->val2) ;
(p)->val2-- ; printf("%x\n",p->val2) ;
}
int main(void)
{
help1() ;
help2() ;
return(0) ;
}
/* I use this gcc
Reading specs from /usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/specs
gcc version 2.9-gnupro-98r2
/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/cpp -lang-c++ -v -iprefix /usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/ -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=9 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__EXCEPTIONS -D__OPTIMIZE__ -Wall -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) help.c /export/home/tmp/ccY6obz5.ii
GNU CPP version 2.9-gnupro-98r2 (sparc)
#include "..." search starts here:
#include <...> search starts here:
/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/../../../../../include/g++
/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/../../../../../include
/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/../../../../sparc-sun-solaris2.6/include
/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/include
/usr/cygnus/gnupro-98r2/H-sparc-sun-solaris2.6/lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/../../../../../include/g++
/usr/cygnus/gnupro-98r2/H-sparc-sun-solaris2.6/lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/../../../../../include
/usr/cygnus/gnupro-98r2/H-sparc-sun-solaris2.6/lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/../../../../sparc-sun-solaris2.6/include
/usr/cygnus/gnupro-98r2/H-sparc-sun-solaris2.6/lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/include
/usr/include
End of search list.
/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/cc1plus /export/home/tmp/ccY6obz5.ii -quiet -dumpbase help.cc -O -Wall -version -o /export/home/tmp/ccSiE5f1.s
GNU C++ version 2.9-gnupro-98r2 (sparc-sun-solaris2.6) compiled by GNU C version 2.9-gnupro-98r2.
help.c: In function `void ex2()':
help.c:21: warning: comparison is always zero
help.c: In function `void help2()':
help.c:67: warning: value computed is not used
help.c:68: warning: value computed is not used
help.c:69: warning: value computed is not used
help.c:70: warning: value computed is not used
help.c:71: warning: value computed is not used
help.c:72: warning: value computed is not used
/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/../../../../sparc-sun-solaris2.6/bin/as -V -Qy -s -o /export/home/tmp/cc4Z8JR4.o /export/home/tmp/ccSiE5f1.s
GNU assembler version 2.9-gnupro-98r2 (sparc-sun-solaris2.6) using BFD version 2.9-gnupro-98r2
/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/collect2 -V -Y P,/usr/ccs/lib:/usr/lib -Qy /usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/crt1.o /usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/crti.o /usr/ccs/lib/values-Xa.o /usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/crtbegin.o -L/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2 -L/usr/gnupro/bin/../lib/gcc-lib -L/usr/cygnus/gnupro-98r2/H-sparc-sun-solaris2.6/lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2 -L/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/../../../../sparc-sun-solaris2.6/lib -L/usr/cygnus/gnupro-98r2/H-sparc-sun-solaris2.6/lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/../../../../sparc-sun-solaris2.6/lib -L/usr/ccs/bin -L/usr/ccs/lib -L/usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/../../.. -L/usr/cygnus/gnupro-98r2/H-sparc-sun-solaris2.6/lib/gcc-lib/sparc-sun-!
so!
laris2.6/2.9-gnupro-98r2/../../.. /export/home/tmp/cc4Z8JR4.o -lstdc++ -lm -lgcc -lc -lgcc /usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/crtend.o /usr/gnupro/bin/../lib/gcc-lib/sparc-sun-solaris2.6/2.9-gnupro-98r2/crtn.o
GNU ld version 2.9-gnupro-98r2 (with BFD 2.9-gnupro-98r2)
Supported emulations:
elf32_sparc
*/