home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / lang / c / 13170 < prev    next >
Encoding:
Text File  |  1992-09-03  |  1.6 KB  |  46 lines

  1. Xref: sparky comp.lang.c:13170 comp.sys.sun.misc:4067
  2. Path: sparky!uunet!metrix!ama
  3. From: ama@metrix.UUCP (Alan Amaral)
  4. Newsgroups: comp.lang.c,comp.sys.sun.misc
  5. Subject: Re: sun cc optimization failure
  6. Message-ID: <881@metrix.UUCP>
  7. Date: 3 Sep 92 15:08:05 GMT
  8. References: <1992Sep3.040401.16902@mr.med.ge.com>
  9. Reply-To: ama@metrix.UUCP (Alan Amaral)
  10. Organization: Matrix Computer Systems Inc.
  11. Lines: 33
  12.  
  13. In article <1992Sep3.040401.16902@mr.med.ge.com> carl@aslmr-serv.med.ge.com (Carl Crawford) writes:
  14. >
  15. >consider the following program:
  16. >
  17. >main() {
  18. >    int i,j,ax;
  19. >    ax = 0;
  20. >    for(i=0;i<3;i++){
  21. >        j = ax * i;
  22. >        puts("in for loop");
  23. >    }
  24. >}
  25.  
  26. By the way, if you change the ax=0 to ax=1 the problem goes away.  It also
  27. goes away if you remove the j = ax * i; from the loop.  Apparently the
  28. global opimizer, in trying to remove the invariant expression from the loop
  29. (j == 0 ALWAYS if ax == 0), apparently screws up the loop variable
  30. initialization (as I explained in my last message) which causes the code not
  31. to loop at all. 
  32.  
  33. Adding more code to the loop, say k = ay * i; where ay = 1; will also fix
  34. the problem.  Strangely enough the assembler code is IDENTICAL (except for
  35. the register initialization being correct) if you add the extra code, as k
  36. is not used in the loop, so the calculation is totally eliminated.  The
  37. compiler apparently doesn't screw up the initialization in this case...
  38.  
  39. It looks like the compiler has problems with removing invariant expressions,
  40. but not unused expressions...
  41.  
  42. Curiouser and curiouser...
  43. -- 
  44. Alan Amaral             |  Email: ama@metrix.COM
  45. Metrix Network Systems  |  Voice: (603) 888-7000
  46.