Comparing the source tree is very slow and inefficient, especially
when there is no good diff tools. I think there are some other
advantages to use macros. For example, when one navigates the code in
osprey-gcc, he can easily know what code belongs to original GCC and
what are added by Open64.

2010/8/17 David Coakley <dcoak...@gmail.com>:
> Personally, I would not trust manually added ifdef's to reveal all the
> Open64 modifications to the front-end.  A reliable way to see the
> differences is to download the stock gcc-4.2.0 sources
> (http://mirrors.kernel.org/gnu/gcc/gcc-4.2.0) and compare the trees.
> I don't really see the value of using KEY or any other ifdef to mark
> change regions.
>
> I do agree that the changes should be enclosed by a check on
> 'flag_spin_file'.  In my last set of changes to osprey-gcc-4.2.0, I
> made sure that the resulting gcc behaved the same as the stock
> gcc-4.2.0 when '-spinfile' was not used on the command line.
>
> -David Coakley / AMD Open Source Compiler Engineering
>
> On Tue, Aug 17, 2010 at 4:00 PM, Mike Murphy <mmur...@nvidia.com> wrote:
>> I agree that we shouldn't use KEY anymore (it has an obscure history that is 
>> no longer relevant).  Better to use something like #ifdef OPEN64 in the gcc 
>> files.
>>
>> -----Original Message-----
>> From: Suneel Jain [mailto:suneel.j...@gmail.com]
>> Sent: Tuesday, August 17, 2010 3:56 PM
>> To: Jian-Xin Lai
>> Cc: open64-devel@lists.sourceforge.net
>> Subject: Re: [Open64-devel] duplicate_decls bug
>>
>> I agree these changes should be under an ifdef so we can easily identify
>> Open64 specific changes in the gcc directories. This makes it
>> easier to merge with future versions of gcc frontends.
>>
>> However, I think we should use a macro name that conveys this more
>> explicitly instead of using "#ifdef KEY". Do we have a convention for
>> names of such macros and where they should be defined ?
>>
>> Some possibilities for the macros name:
>>
>>  OPEN64_SPIN
>>  GCC_SPIN_GEN
>>
>> Comments ?
>>
>> - Suneel
>>
>>
>>
>> On Mon, Aug 16, 2010 at 3:43 PM, Jian-Xin Lai <laij...@gmail.com> wrote:
>>> I think these changes should be enclosed by some macro ( shall we use
>>> the #ifdef KEY? ). Also, these changes should be only applied under
>>> "if (flag_spin_file)".
>>> For example:
>>>
>>> if (flag_spin_file) {
>>>  TREE_TO_TRANSLATED_GS(olddecl) = TREE_TO_TRANSLATED_GS(newdecl);
>>>  FULLY_TRANSLATED_TO_GS(olddecl) = FULLY_TRANSLATED_TO_GS(newdecl);
>>> }
>>>
>>> 2010/8/15 Chen, Rui (Roger, TSG-GDCC-SH) <rui.c...@hp.com>:
>>>> Hi all,
>>>>
>>>>
>>>>
>>>> This is the fix for bug 582 (https://bugs.open64.net/show_bug.cgi?id=582).
>>>> Can gatekeeper help to review it?
>>>>
>>>>
>>>>
>>>> I attached the test case (min.i) and patch (582.patch). You can reproduce
>>>> the problem with "openCC -O0 -g -c min.i".
>>>>
>>>>
>>>>
>>>> This bug caused by merge user declared "log" function with built-in "log"
>>>> function. The front-end forgets to copy GSPIN related fields and 
>>>> declaration
>>>> assembler name.
>>>>
>>>>
>>>>
>>>> If you are interested in the analysis process, here it is:
>>>>
>>>>
>>>>
>>>> Breakpoints you need to setup:
>>>>
>>>> b name-lookup.c:615 if strcmp(name.identifier.id.str, "log") == 0
>>>>
>>>> b passes.c:148
>>>>
>>>>
>>>>
>>>> Compiler will initial built-in functions first, so those functions declared
>>>> in osprey-gcc-4.2.0/gcc/builtins.def will be translated to gcc tree. And
>>>> built-in "log" will be translated twice, one into global namespace, one 
>>>> into
>>>> std namespace.
>>>>
>>>>
>>>>
>>>> Then the second breakpoint is triggered. This method checks whether the
>>>> declared function has "alias" attribute or not. If the answer is yes, it
>>>> will translate gcc tree to open64 gspin tree:
>>>>
>>>>
>>>>
>>>> #ifdef KEY
>>>>
>>>>         /* Put aliases into the list of decls emitted by g++ so that we can
>>>>
>>>>          * iterate through the list when expanding aliases to WHIRL.  An
>>>> alias
>>>>
>>>>          * can be expanded only if its target, which can be another alias,
>>>> is
>>>>
>>>>          * expanded.  Bug 4393. */
>>>>
>>>>         if (flag_spin_file)
>>>>
>>>>           gspin_gxx_emits_decl(decl);
>>>>
>>>> #endif
>>>>
>>>>
>>>>
>>>> In this test case, it declares:
>>>>
>>>>
>>>>
>>>>                extern __typeof(pthread_once) __gthrw_pthread_once
>>>> __attribute__ ((__weakref__("pthread_once")));
>>>>
>>>>
>>>>
>>>> __weakref__ means "alias" attribute, so compiler start translation at this
>>>> time. At this time, only built-in log can be found by compiler.
>>>>
>>>>
>>>>
>>>> After that, compiler parsed user defined "log". It then find out we have
>>>> already defined a "log" in the global namespace. (name-lookup.c, line 623)
>>>> So it tries to merge the declarations. (duplicate_decls function in decl.c)
>>>>
>>>>
>>>>
>>>> I patched this file, to let it also copy gspin related fields and
>>>> declaration assembler name.
>>>>
>>>>
>>>>
>>>> Then after compiler parsed the whole file, it will translate gcc tree to
>>>> gspin tree again. Without the patch, it just re-use the built-in log gspin
>>>> tree. With this patch, it will rebuild the log gspin tree using the new log
>>>> declaration.
>>>>
>>>>
>>>>
>>>> Regards,
>>>>
>>>> Roger
>>>>
>>>> ------------------------------------------------------------------------------
>>>> This SF.net email is sponsored by
>>>>
>>>> Make an app they can't live without
>>>> Enter the BlackBerry Developer Challenge
>>>> http://p.sf.net/sfu/RIM-dev2dev
>>>> _______________________________________________
>>>> Open64-devel mailing list
>>>> Open64-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Regards,
>>> Lai Jian-Xin
>>>
>>> ------------------------------------------------------------------------------
>>> This SF.net email is sponsored by
>>>
>>> Make an app they can't live without
>>> Enter the BlackBerry Developer Challenge
>>> http://p.sf.net/sfu/RIM-dev2dev
>>> _______________________________________________
>>> Open64-devel mailing list
>>> Open64-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>>
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by
>>
>> Make an app they can't live without
>> Enter the BlackBerry Developer Challenge
>> http://p.sf.net/sfu/RIM-dev2dev
>> _______________________________________________
>> Open64-devel mailing list
>> Open64-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>> -----------------------------------------------------------------------------------
>> This email message is for the sole use of the intended recipient(s) and may 
>> contain
>> confidential information.  Any unauthorized review, use, disclosure or 
>> distribution
>> is prohibited.  If you are not the intended recipient, please contact the 
>> sender by
>> reply email and destroy all copies of the original message.
>> -----------------------------------------------------------------------------------
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by
>>
>> Make an app they can't live without
>> Enter the BlackBerry Developer Challenge
>> http://p.sf.net/sfu/RIM-dev2dev
>> _______________________________________________
>> Open64-devel mailing list
>> Open64-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>
>



-- 
Regards,
Lai Jian-Xin

------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to