This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Why this loop is not optimised out?
- From: jgojgo <chairmanguo at gmail dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Thu, 6 Oct 2011 14:21:07 -0700 (PDT)
- Subject: Why this loop is not optimised out?
I've got a very simple c program which copies all elements from array A to
back to array A. For example,
int *A;
A = (int*)malloc(sizeof(int)*SIZE);
for( i = 0; i < SIZE; i++) {
A[i] = A[i];
}
I was expecting this to be optimised out by the compiler and eventually
turned into a noop. However, by measuring the runtime of this loop and
looking at the assembly code, it seems that the element is indeed loaded
from memory into register and then stored back to the same memory location.
I have -O3 enabled. Can anyone explain to me why the c compiler does not
optimise it? Or am I missing something here?
Many thanks.
--
View this message in context: http://old.nabble.com/Why-this-loop-is-not-optimised-out--tp32602004p32602004.html
Sent from the gcc - Help mailing list archive at Nabble.com.