gcc does not do the built_in fold at O2.
Regards
Gang

On Sat, Dec 17, 2011 at 5:23 PM, Sun Chan <sun.c...@gmail.com> wrote:

> if at O0, gcc optimized it, why is it the case different at O2?
> Sun
>
> On Sat, Dec 17, 2011 at 5:18 PM, Gang Yu <yugang...@gmail.com> wrote:
>
>> For your questions:
>> [1]. why the assertion,
>>     asm volatile ("%0" : : "i#*X"(x)); is a wrong assembler statement, it
>> should be DCEed by optimizer and should not exist in CG phase.
>>
>> [2]. in order to get DCE. we should make condition
>> _builtin_constant_p (x)
>>       && x != 0
>> be folded to constant 0, intrinsic_op _builtin_constant_p(x) should be
>> simplified to 0 and then let the optimizer further optimized
>> _builtin_constant_p (x)
>> && x != 0
>> to 0
>>
>> [3]. at phase O0, _builtin_constant_p(x) is already folded to 0 by gcc.
>> and the original case, with the __OPTIMIZE__ macro will not be enabled.
>>
>> Regards
>> Gang
>>
>>
>>  On Sat, Dec 17, 2011 at 5:11 PM, Sun Chan <sun.c...@gmail.com> wrote:
>>
>>> Pls send more info for me to adequately review this fix.
>>> Why do you suggest this fix. What is the problem with the assertion.
>>> If you do that at -O0, what would happen?
>>> Sun
>>>
>>>  On Sat, Dec 17, 2011 at 12:52 AM, Gang Yu <yugang...@gmail.com> wrote:
>>>
>>>>  Hi,
>>>>
>>>>    Could a gatekeeper please help review the fix for bug595(
>>>> https://bugs.open64.net/show_bug.cgi?id=595)?
>>>>
>>>> bug case:
>>>>
>>>> extern void doit(int);
>>>> void
>>>> quick_doit(int x)
>>>> {
>>>>   if (__builtin_constant_p (x)
>>>>       && x != 0)
>>>>     asm volatile ("%0" : : "i#*X"(x));
>>>>   else
>>>>     doit(x);
>>>> }
>>>>  Compiling quick_doit(0)
>>>> "bug595.c", line 9: Error: Invalid 'asm' constrain : Cannot find
>>>> immediate operand for ASM
>>>> opencc ERROR:
>>>> /fc/proj/ctires/open64/o64guru/OPEN64_X86_DBG/LATEST/bits//lib/gcc-lib/x86_64-open64-linux/5.0/be
>>>> returned non-zero status 4
>>>>  Analysis:
>>>> __builtin_constant_p(x) && x !=0 should be directly folded to if 0(it
>>>> did not), then DCE does unreachable elimination, which finally sent out
>>>> "doit" to CG.
>>>>
>>>> Suggested fix:
>>>> index 148c4e2..42f55fb 100644
>>>> --- a/osprey/be/opt/opt_htable.cxx
>>>> +++ b/osprey/be/opt/opt_htable.cxx
>>>> @@ -3575,7 +3575,9 @@ CODEMAP::Add_expr(WN *wn, OPT_STAB *opt_stab,
>>>> STMTREP *stmt, CANON_CR *ccr,
>>>>           ccr->Set_tree(NULL);
>>>>           ccr->Set_scale(retv->Const_val());
>>>>           retv->DecUsecnt();
>>>> -         return FALSE;
>>>> +          // bug595 open64.net. intrinsic op folded to compile
>>>> constant
>>>> +          // should be marked propogated for further
>>>> fold/optimizations.
>>>> +          return TRUE;
>>>>         }
>>>>         if (retv->Kind() == CK_RCONST) {
>>>>           ccr->Set_tree(retv);
>>>> Would a gatekeeper help the review? thanks
>>>> Regards
>>>> Gang
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Learn Windows Azure Live!  Tuesday, Dec 13, 2011
>>>> Microsoft is holding a special Learn Windows Azure training event for
>>>> developers. It will provide a great way to learn Windows Azure and what
>>>> it
>>>> provides. You can attend the event by watching it streamed LIVE online.
>>>> Learn more at http://p.sf.net/sfu/ms-windowsazure
>>>> _______________________________________________
>>>> Open64-devel mailing list
>>>> Open64-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>>>
>>>>
>>>
>>
>
------------------------------------------------------------------------------
Learn Windows Azure Live!  Tuesday, Dec 13, 2011
Microsoft is holding a special Learn Windows Azure training event for 
developers. It will provide a great way to learn Windows Azure and what it 
provides. You can attend the event by watching it streamed LIVE online.  
Learn more at http://p.sf.net/sfu/ms-windowsazure
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to