This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Abt code generation


Hello,

For the code (20020611-1.c)

int p;int k;unsigned int n;
void x ()
{

unsigned int h;                        //line 1
 h = n <= 30;                         //line 2 
// printf("%u\n",h);

  if (h)
    p = 1;
  else
    p = 0;

  if (h)
    k = 1;
  else
    k = 0;
}
unsigned int n = 30;

main ()
{
  x ();
  if (p != 1 || k != 1)
    abort ();
  exit (0);
}


By looking rtl dump generated with -dump-rtl-rnreg for code optimization Os, my target generates no code for line 1 and 2 .It generates code starting with checking CC value for if (h). For other optimization level, it generates proper code.

Again, if  a printf statement is added below line 2 (commented in above example), then even for Optimization Os it generates proper code.

1. Can anyone suggest the probable areas for this kind of behaviour.

2. What part of Optimzation level Os deals with removing redundant codes or is there a way to disable them?


Thanks in advance.

Regards,
Shafi.





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]