Re: global declarations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 17 September 2010 06:38, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
> Philip Herron <redbrain@xxxxxxxxxxx> writes:
>
>> Been asking on irc tonight but i think many might be sensible and
>> sleeping. Anyway's this has been bugging me for some time, if i create
>> a VAR_DECL such as:
>>
>> tree test = build_decl( UNKNOWN_LOCATION, VAR_DECL,
>>                         get_identifier("test"),
>>                         integer_type_node);
>>
>>   TREE_CONSTANT (test) = 1;
>>   DECL_ARTIFICIAL (test) = 1;
>>   TREE_STATIC (test) = 1;
>>   TREE_READONLY (test) = 1;
>>   TREE_USED (test) = 1;
>>   DECL_INITIAL (test) = build_int_cst(integer_type_node, 1234 );
>
> By setting TREE_CONSTANT and TREE_STATIC, you are marking this decl as a
> static const, more or less like a C++ const.  It will only be written
> out if something else refers to it.  You probably don't want to set
> TREE_CONSTANT.
>

I just tried that and played with and added in extras to see if they
help and it still didn't output any code.

   tree test = build_decl( UNKNOWN_LOCATION, VAR_DECL,
			  get_identifier("test"),
			  integer_type_node);

  DECL_ARTIFICIAL (test) = 1;
  TREE_PUBLIC(test) = 1;
  TREE_USED (test) = 1;
  DECL_INITIAL (test) = build_int_cst(integer_type_node, 12345 );

I am trying to follow what the c front-end is doing but
gimplify_expression isn't called on a toplevel global VAR_DECL, since
i wanted to see the debug_tree of the decl, though code is still
output for it. I might be able to run though its write-globals
function and call debug_tree there to see the difference.

--Phil



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux