Looks good to me.
Regards,
Jian-Xin
在 2012-1-4,14:19,朱庆 <zqing1...@gmail.com> 写道:
> Hi all,
>
> Can gatekeeper help review bug940? Thanks.
> https://bugs.open64.net/show_bug.cgi?id=940
> case:
> int main()
> {
> int inc = 0xFFFF;
> asm volatile (
> "add $1, %0\n\t"
> : "+Q" (inc)
> :
> );
> printf("inc=%d\n",inc);
> }
> $opencc case.c �CO0
> ./a.out
> inc=34 // a random number
> $gcc case.c �CO0
> ./a.out
> inc=65536
>
> Analyze:
> the output of .s from open64 is:
> # 3 int inc = 0xFFFF;
> movl $65535,%edi # [0]
> movl %edi,-12(%rbp) # [0] inc
> .loc 1 4 0
> # 4 asm volatile (
> movl -12(%rbp),%eax # [0] inc
> add $1, %edx // edx never defined before
>
> movzbl %dl,%eax # [0]
>
> The problem is at function Adjust_one_eight_bit_reg, it will insert a movzbl
> op.
> The tree before:
> [ 4, 0] TN158 :- asm TN158<defopnd> ; volatile side_effects
> After:
> [ 4, 0] TN160(%rdx) :- asm TN158(%rax) ; volatile side_effects
> [ 4, 0] TN158(%rax) :- movzbl TN160(%rdx) ;
> For asm volatile (
> "add $1, %0\n\t"
> : "+Q" (inc)
> before insert, TN158 is both input and output of asm. For inline asm if the
> input and ouput are the same, we need to make sure they use the same TN,
> stored in the same register. So it need to insert another mov from TN158 to
> TN160 before asm.
> such as:
> [ 4, 0] TN160 :- mov TN158 ; copy
> [ 4, 0] TN160 :- asm TN160 ; volatile side_effects
> [ 4, 0] TN158 :- mov32 TN160 ; copy
>
> Thanks
> zhuqing
> <bug940.patch>
> ------------------------------------------------------------------------------
> Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
> infrastructure or vast IT resources to deliver seamless, secure access to
> virtual desktops. With this all-in-one solution, easily deploy virtual
> desktops for less than the cost of PCs and save 60% on VDI infrastructure
> costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
> _______________________________________________
> Open64-devel mailing list
> Open64-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/open64-devel
------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual
desktops for less than the cost of PCs and save 60% on VDI infrastructure
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel