Hi,

Here is what I found:
1. The front-end does not delete j, k. You can see them in the dump produced
by ir_b2a -st.
2. The compiler does not reserve space on stack if a stack variable is not
used even at -O0.
3. As long as the variable is used, an amount of stack space is reserved.

The problem is that stack space reservation is happened during code
expansion while expanding WHIRL statement (see whirl2ops.cxx:4885 call to
Allocate_Object). Because of this, if a symbol is not used it will never be
reserved on the stack.


-- Feng


2011/6/8 Jian-Xin Lai <laij...@gmail.com>

> Because you added -O0 to your second command line, all optimizations are
> turned off.
>
> 2011/6/9 eirc.lew <eirc....@gmail.com>
>
>  Hi,
>>
>>   The command options can stop the open64 from deleting the unused code,
>> but they are eliminated in the whirl2c fhase.
>>   I compared the different the differnt command options,and got the
>> assembly code as follow, the red line means: "i = 6; k = 9;" the test case :
>>   1)just opencc hello.c -o a.out
>> 08048394 <main>:
>>  8048394: 83 c4 fc              add    $0xfffffffc,%esp
>>  8048397: d9 3c 24              fnstcw (%esp)
>>  804839a: 66 81 24 24 ff fc     andw   $0xfcff,(%esp)
>>  80483a0: 66 81 0c 24 00 03     orw    $0x300,(%esp)
>>  80483a6: d9 2c 24              fldcw  (%esp)
>>  80483a9: 83 c4 04              add    $0x4,%esp
>>  80483ac: 55                    push   %ebp
>>  80483ad: 53                    push   %ebx
>>  80483ae: 31 c0                 xor    %eax,%eax
>>  80483b0: 5b                    pop    %ebx
>>  80483b1: 5d                    pop    %ebp
>>  80483b2: c3                    ret
>>  80483b3: 90                    nop
>> 2) opencc -Wunused -IPA:cprop=off -IPA:dce=off -WOPT:ivar_pre=off
>> -WOPT:icopy=off:copy=off  -Wb,-tt32:0x00000400  -O0 --vv   hello.c
>>
>> 08048434 <main>:
>>  8048434: 83 c4 fc              add    $0xfffffffc,%esp
>>  8048437: d9 3c 24              fnstcw (%esp)
>>  804843a: 66 81 24 24 ff fc     andw   $0xfcff,(%esp)
>>  8048440: 66 81 0c 24 00 03     orw    $0x300,(%esp)
>>  8048446: d9 2c 24              fldcw  (%esp)
>>  8048449: 83 c4 04              add    $0x4,%esp
>>  804844c: 55                    push   %ebp
>>  804844d: 89 e5                 mov    %esp,%ebp
>>  804844f: 83 c4 f0              add    $0xfffffff0,%esp
>>  *8048452: ba 09 00 00 00        mov    $0x9,%edx
>> * 8048457: 89 55 f8              mov    %edx,0xfffffff8(%ebp)
>>  *804845a: b9 06 00 00 00        mov    $0x6,%ecx*
>>  804845f: 89 4d f4              mov    %ecx,0xfffffff4(%ebp)
>>
>>     So I have to check if I can do something in the whirl2c phase ?!
>>
>> Thanks!
>>
>> Eric
>>
>> ----- Original Message -----
>> *From:* eirc.lew <eirc....@gmail.com>
>> *To:* Chandrasekhar Murthy <mur...@sgi.com> ; Shin-Ming 
>> Liu<shinm...@gmail.com>
>> *Cc:* open64-devel@lists.sourceforge.net
>> *Sent:* Thursday, June 09, 2011 10:52 AM
>> *Subject:* Re: [Open64-devel] How can I stop open64 delete unused code
>>
>> Hi,
>>
>> compiling command is:
>> opencc -Wunused -IPA:cprop=off -IPA:dce=off -WOPT:ivar_pre=off
>> -WOPT:icopy=off:copy=off  -Wb,-tt32:0x00000400  -O0 --vv   hello.c
>>
>> The input is:
>>
>> #include<stdio.h>
>> #define N 100
>>
>> int main()
>> {
>>   int i, j, k;
>>   i = 0;
>>   k = 0;
>>   int a[N];
>>   for( j = 0; j < N; j++)
>>     a[j] = j + 4;
>>   return 0;
>> }
>>
>>
>> The output is:(there were no i and k)
>> #include "hello.w2c.h"
>>
>>
>> extern _INT32 main()
>> {
>>
>>   _INT32 j;
>>   _INT32 a[100LL];
>>
>>   j = 0;
>>   while(j <= 99)
>>   {
>>     _514 :;
>>     (a)[j] = j + 4;
>>     j = j + 1;
>>     _258 :;
>>   }
>>   goto _770;
>>   _770 :;
>>   return 0;
>> } /* main */
>>
>>
>>
>>
>> ----- Original Message -----
>> *From:* Chandrasekhar Murthy <mur...@sgi.com>
>> *To:* Shin-Ming Liu <shinm...@gmail.com> ; eirc.lew <eirc....@gmail.com>
>> *Cc:* open64-devel@lists.sourceforge.net
>> *Sent:* Thursday, June 09, 2011 4:34 AM
>> *Subject:* RE: [Open64-devel] How can I stop open64 delete unused code
>>
>> In the MIPSpro compilers they would be removed in the frontend.
>> You might want to check where it gets removed starting from the frontend.
>>
>> Murthy
>>
>>  *From:* Shin-Ming Liu [mailto:shinm...@gmail.com <shinm...@gmail.com>]
>> *Sent:* Wednesday, June 08, 2011 8:46 AM
>> *To:* eirc.lew
>> *Cc:* open64-devel@lists.sourceforge.net
>> *Subject:* Re: [Open64-devel] How can I stop open64 delete unused code
>>
>> Do you mean the compiler does not reserve space on the stack?  The place
>> to look at is the data layout component in CG.  Should be simple to keep
>> them with simple change.
>>
>> Shin
>> On Wed, Jun 8, 2011 at 6:11 AM, eirc.lew 
>> <*eirc....@gmail.com*<eirc....@gmail.com>>
>> wrote:
>> Hi, all
>>
>>   a example(main.c) as follow:
>>
>> int main()
>> {
>>   int sum;
>>   int i, j, k;
>>   for( i = 0; i < 100; i++ )
>>     sum = i + 9;
>>
>>   return 0;
>>  }
>>
>>  when I compile it: opencc -CLIST:: main.c
>>
>>  In the file main.w2c.c, there are no j and k, but I need them.Does
>> someone know how to do?
>>
>> Thanks!
>>
>> Eric
>>
>>
>> ------------------------------------------------------------------------------
>> EditLive Enterprise is the world's most technically advanced content
>> authoring tool. Experience the power of Track Changes, Inline Image
>> Editing and ensure content is compliant with Accessibility Checking.
>> *http://p.sf.net/sfu/ephox-dev2dev* <http://p.sf.net/sfu/ephox-dev2dev>
>> _______________________________________________
>> Open64-devel mailing list
>> *Open64-devel@lists.sourceforge.net* <Open64-devel@lists.sourceforge.net>
>> *https://lists.sourceforge.net/lists/listinfo/open64-devel*<https://lists.sourceforge.net/lists/listinfo/open64-devel>
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> EditLive Enterprise is the world's most technically advanced content
>> authoring tool. Experience the power of Track Changes, Inline Image
>> Editing and ensure content is compliant with Accessibility Checking.
>> http://p.sf.net/sfu/ephox-dev2dev
>> _______________________________________________
>> Open64-devel mailing list
>> Open64-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>
>>
>
>
> --
> Regards,
> Lai Jian-Xin
>
>
> ------------------------------------------------------------------------------
> EditLive Enterprise is the world's most technically advanced content
> authoring tool. Experience the power of Track Changes, Inline Image
> Editing and ensure content is compliant with Accessibility Checking.
> http://p.sf.net/sfu/ephox-dev2dev
> _______________________________________________
> Open64-devel mailing list
> Open64-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/open64-devel
>
>
------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to