thanks, But b=a is a assignment statement. It is doing some memory operations isn't it. Assuming b=a is a dead statement, how r the following i386 assembly statements generated pushl %ebp movl %esp, %ebp andl $-16, %esp subl $16, %esp movl $5, 4(%esp) movl $.LC0, (%esp) call printf
pls reply Richard Guenther-2 wrote: > > On Fri, Aug 7, 2009 at 1:50 PM, pms<pmsh...@gmail.com> wrote: >> >> Hi, >> We've a problem here. we were trying to use cc1 with & without -O >> option to verify the optimizations happening in our sample code. these r >> the >> list of outputs after each compilation >> without -O >> p...@shiva:~/Desktop/Compilers/GCC/build/test$ ls >> 1.c 1.c.011t.ehopt 1.c.038t.release_ssa >> 1.c.001t.tu 1.c.012t.eh 1.c.123t.optimized >> 1.c.003t.original 1.c.013t.cfg 1.c.125t.blocks >> 1.c.004t.gimple 1.c.014t.cplxlower0 1.c.126t.final_cleanup >> 1.c.006t.vcg 1.c.015t.veclower 1.c.203t.statistics >> 1.c.007t.useless 1.c.021t.cleanup_cfg 1.s >> 1.c.010t.lower 1.c.023t.ssa a.out >> >> with -O >> >> 1.c 1.c.051t.ccp2 1.c.085t.sink >> 1.c.001t.tu 1.c.052t.forwprop2 1.c.086t.loop >> 1.c.003t.original 1.c.054t.alias 1.c.087t.loopinit >> 1.c.004t.gimple 1.c.055t.retslot 1.c.088t.copyprop4 >> 1.c.006t.vcg 1.c.056t.phiprop 1.c.089t.dceloop1 >> 1.c.007t.useless 1.c.057t.fre 1.c.090t.lim >> 1.c.010t.lower 1.c.058t.copyprop2 1.c.093t.sccp >> 1.c.011t.ehopt 1.c.059t.mergephi2 1.c.094t.empty >> 1.c.012t.eh 1.c.061t.dce1 1.c.099t.ivcanon >> 1.c.013t.cfg 1.c.062t.cselim 1.c.104t.cunroll >> 1.c.015t.veclower 1.c.063t.ifcombine 1.c.107t.ivopts >> 1.c.021t.cleanup_cfg 1.c.064t.phiopt1 1.c.108t.loopdone >> 1.c.023t.ssa 1.c.066t.ch 1.c.111t.reassoc2 >> 1.c.024t.early_optimizations 1.c.068t.cplxlower 1.c.113t.dom2 >> 1.c.025t.einline2 1.c.069t.sra 1.c.114t.phicprop2 >> 1.c.026t.copyrename1 1.c.070t.copyrename3 1.c.115t.cddce2 >> 1.c.027t.ccp1 1.c.071t.dom1 1.c.117t.dse2 >> 1.c.028t.forwprop1 1.c.072t.phicprop1 1.c.118t.forwprop4 >> 1.c.029t.addressables1 1.c.073t.dse1 1.c.119t.phiopt3 >> 1.c.030t.esra 1.c.074t.reassoc1 1.c.121t.copyrename4 >> 1.c.031t.copyprop1 1.c.075t.dce2 1.c.122t.uncprop >> 1.c.032t.mergephi1 1.c.076t.forwprop3 1.c.123t.optimized >> 1.c.033t.cddce1 1.c.077t.phiopt2 1.c.124t.nrv >> 1.c.034t.sdse 1.c.078t.objsz 1.c.125t.blocks >> 1.c.036t.switchconv 1.c.079t.ccp3 >> 1.c.126t.final_cleanup >> 1.c.037t.profile 1.c.080t.copyprop3 1.c.203t.statistics >> 1.c.038t.release_ssa 1.c.081t.fab 1.s >> 1.c.048t.addressables2 1.c.082t.sincos a.out >> 1.c.049t.copyrename2 1.c.083t.crited >> >> But here, we tried to see the differences, until 1.c.027t.ccp1, the >> output >> for the following source 1.c >> #include >> int main() >> >> { >> int a=5; >> int b; >> b=a; >> printf("the number is :%d",b); >> } >> >> was 1.c.026t.copyrename1 >> ;; Function main (main) >> >> main () >> { >> int b; >> int a; >> >> : >> a_2 = b_1(D); >> return; >> >> } >> but in 1.c.027t.ccp1, the output doesnot contain the actual assignment >> b=a. >> ;; Function main (main) >> >> main () >> { >> int b; >> int a; >> >> : >> return; >> >> } >> >> We want to know, without b=a, how is it generating the final code for b=a > > Nothing. Because it's a dead statement. > > Richard. > >> Kindly help >> >> -- >> View this message in context: >> http://www.nabble.com/regarding-optimization-options-in-phase-ordering-tp24863416p24863416.html >> Sent from the gcc - Dev mailing list archive at Nabble.com. >> >> > > -- View this message in context: http://www.nabble.com/regarding-optimization-options-in-phase-ordering-tp24863416p24864601.html Sent from the gcc - Dev mailing list archive at Nabble.com.