On 4/18/13 7:57 AM, Joseph Spinden wrote:
"Another result (the unsolvability of the halting problem) may be interpreted as implying the impossibility of constructing a program for determining whether or not an arbitrary given program is free of 'loops'."

Well, compilers can't reason about all forms of loops, but note how the compiler realized that the accumulating "sum" didn't require iteration. (In the assembly it collapses to a "movl $30,%eax".) Flat maps and reductions with simple transformation/aggregation functions can be determined to exit.

$ cat collapse.c
int
main ()
{
   unsigned i;
   unsigned sum = 0;

   for (i = 0; i < 10; i++) sum += 3;
   return sum;
}
$ gcc -S -O3 collapse.c
$ cat collapse.s
    .file    "collapse.c"
    .section    .text.startup,"ax",@progbits
    .p2align 4,,15
    .globl    main
    .type    main, @function
main:
.LFB0:
    .cfi_startproc
    movl    $30, %eax
    ret
    .cfi_endproc
.LFE0:
    .size    main, .-main
    .ident    "GCC: (GNU) 4.7.2 20121109 (Red Hat 4.7.2-8)"
    .section    .note.GNU-stack,"",@progbits
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
to unsubscribe http://redfish.com/mailman/listinfo/friam_redfish.com

Reply via email to