-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 11/16/11 04:00, Richard Guenther wrote:
> On Mon, Nov 14, 2011 at 9:01 AM, Jiangning Liu
> <jiangning....@arm.com> wrote:
>> Hi,
>> 
>> For this test case,
>> 
>> int x; extern void f(void);
>> 
>> void g(int *a) { a[x] = 1; if (x == 100) f(); a[x] = 2; }
>> 
>> For trunk, the x86 assembly code is like below,
>> 
>> movl    x, %eax movl    16(%esp), %ebx movl    $1, (%ebx,%eax,4) 
>> movl    x, %eax   // Is this a redundant one? cmpl    $100, %eax 
>> je      .L4 movl    $2, (%ebx,%eax,4) addl    $8, %esp 
>> .cfi_remember_state .cfi_def_cfa_offset 8 popl    %ebx 
>> .cfi_restore 3 .cfi_def_cfa_offset 4 ret .p2align 4,,7 .p2align
>> 3 .L4: .cfi_restore_state call    f movl    x, %eax movl    $2,
>> (%ebx,%eax,4) addl    $8, %esp .cfi_def_cfa_offset 8 popl
>> %ebx .cfi_restore 3 .cfi_def_cfa_offset 4 Ret
>> 
>> Is the 2nd "movl x, %eax" is a redundant one for single thread
>> programming model? If yes, can this be optimized away?
> 
> f() may change the value of x, so you cannot optimize away the load
> on that execution path.
Right.  In theory, path isolation would make this optimizable.  Make a
copy of the block containing a[x] = 2 and make it the target when x !=
100.  At the source level it'd look something like this:

 int x;
 extern void f(void);

 void g(int *a)
 {
        a[x] = 1;
        if (x == 100) {
                f();
                a[x] = 2;
        } else {
                a[x] = 2;
        }
 }


The problem then becomes identification of the load from "x" as
redundant on the else path, which we're currently not capable of doing.

jeff
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJOw+0dAAoJEBRtltQi2kC7MS0H/Ri6MqbuhEWbL8pLanaNpBwZ
NmAcecLVIbB4YVhfqtnWOftUYFAIZZ7WhYHGNsVFIZiIK0wfGmUCk6Jmun6kpUkp
TeE2Tlf6keyfGy8XImayhn6Ngifwa9salcxxL4eSND/pADZ2j+URTXVJQvlWlnIv
4aDXrQdlkTtO9EZYwSGoxbAIfHaooSQotLXT68esiTYeEIK9jD2pZVDDuvorps4E
ov84Z8DurSBa/N+CA2qk0n//mq1ChwiEn+nCRXOF92v6j6av9+jKf54rJPQu7NNf
b7Kj4vRYf+GAHquloqPqe18cK1qbFaZ4O5GGlL8TraXDgIDtOpyzTAtjumOLFZ8=
=raxr
-----END PGP SIGNATURE-----

Reply via email to