Related articles |
---|
Executing code at compilation time pronesto@gmail.com (Fernando) (2010-03-15) |
Re: Executing code at compilation time gah@ugcs.caltech.edu (glen herrmannsfeldt) (2010-03-16) |
Re: Executing code at compilation time torbenm@diku.dk (2010-03-16) |
Re: Executing code at compilation time dnovillo@acm.org (Diego Novillo) (2010-03-16) |
Re: Executing code at compilation time bartc@freeuk.com (Bartc) (2010-03-16) |
Re: Executing code at compilation time quinn_jackson2004@yahoo.ca (Quinn Tyler Jackson) (2010-03-16) |
Re: Executing code at compilation time apoelstra@localhost.localdomain (Andrew Poelstra) (2010-03-16) |
[13 later articles] |
From: | Fernando <pronesto@gmail.com> |
Newsgroups: | comp.compilers |
Date: | Mon, 15 Mar 2010 18:53:02 -0700 (PDT) |
Organization: | Compilers Central |
Keywords: | optimize, question |
Posted-Date: | 16 Mar 2010 01:50:43 EDT |
Dear all,
GCC does a pretty good job at optimizing a program like this one
below:
#include <stdio.h>
int main(int argc, char** argv) {
int i = 0;
int sum = 0;
for (; i < 10; i++) {
sum += i;
}
printf("The sum is %d\n", sum);
}
GCC -O1 produces an assembly that simply prints the answer, 45. It
completely resolves the loop.
I would like to know what kind of optimizations are used to be able to
completely resolve the loop. Could you give me some source? E.g,
chapter in textbook, or paper?
Additionally, GCC does not resolve the loop in the program below:
#include <stdio.h>
int main(int argc, char **argv) {
int i, j, k, t = 0;
for(i = 0; i < 1000; i++)
for(j = 0; j < 1000; j++)
for(k = 0; k < 1000; k++)
if(i * i + j * j + k * k % 7 == 0)
t++;
printf("%d\n", t);
return 0;
}
But it is "solvable" at compilation time. Is there any sort of non-
standard optimization that does the job, in this case?
Thank you very much,
Fernando
Return to the
comp.compilers page.
Search the
comp.compilers archives again.