[Patch, AVR]: Hack around PR34734

Georg-Johann Lay avr@gjlay.de
Thu Jun 16 11:46:00 GMT 2011


Richard Guenther schrieb:
> On Wed, Jun 15, 2011 at 3:54 PM, Georg-Johann Lay <avr@...> wrote:

Is it possible not to quote my email address? Thanks.

>> Weddington, Eric schrieb:
>>> Hi Johann,
>>>
>>> I understand your reasoning, but I'm not particularly fond of this hack.
>> Yes, ACK. It's a hack to get rid of the PR.
>>
>>> Surely there's a way to fix this correctly without relying on this hack...
> 
> Well, doing this error handling at attribute parsing time is going to
> be fragile.
> I suggest to move it to code emission time instead (there currently isn't a
> target hook for when the frontend finished a variable declaration).
> 
> Richard.

Thanks, appears I was a bit lazy in the original patch...

So here it is, no more a hack :-)

	PR target/34734
	* config/avr/avr.c (avr_handle_progmem_attribute): Move warning
	about uninitialized data attributed 'progmem' from here...
	(avr_asm_named_section): ...to here.

I changed the warning message because we now actually have different
behavior: data will be put in progmem no matter if an initializer is
present or not, just a warning will pop up an case of missing
initializer and if Wuninitialized is on.

Johann

>>
>>> Eric Weddington
>>>
>>>> -----Original Message-----
>>>> From: Georg-Johann Lay [mailto:avr@...]

Ditto, quoting ones name here will suffice.

>>>> Sent: Wednesday, June 15, 2011 3:26 PM
>>>> To: gcc-patches@gcc.gnu.org
>>>> Cc: Weddington, Eric; Anatoly Sokolov; Denis Chertykov
>>>> Subject: [Patch, AVR]: Hack around PR34734
>>>>
>>>> PR34734 is an annoying, false C++ warning for code like
>>>>
>>>> const int x __attribute__((progmem)) = 1;
>>>>
>>>> progmem.c:1:30: warning: only initialized variables can be placed into
>>>> program memory area [enabled by default]
>>>>
>>>> The problem is that DECL_INITIAL is NULL at the specific point in
>>>> space and time (avr_handle_progmem_attribute) even though tree.def
>>>> promises otherwise.
>>>>
>>>> The patch hacks around by explicitly querying for C++ front end.
>>>>
>>>> Johann
>>>>
>>>>      PR target/34734
>>>>      * config/avr/avr.c (avr_handle_progmem_attribute): Hack around
>>>>      non-present DECL_INITIAL if front end is C++.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: pr34734.diff
Type: text/x-patch
Size: 1146 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20110616/ee1d8c08/attachment.bin>


More information about the Gcc-patches mailing list