Skip to content
Snippets Groups Projects
Commit c131b1d5 authored by Georg-Johann Lay's avatar Georg-Johann Lay
Browse files

AVR: PR target/112952: Fix attribute "address", "io" and "io_low"

so they work with all combinations of -f[no-]data-sections -f[no-]common.
The patch also improves some diagnostics and adds additional checks, for
example these attributes must only be applied to variables in static storage.

gcc/
	PR target/112952
	* config/avr/avr.cc (avr_handle_addr_attribute): Also print valid
	range when diagnosing attribute "io" and "io_low" are out of range.
	(avr_eval_addr_attrib): Don't ICE on empty address at that place.
	(avr_insert_attributes): Reject if attribute "address", "io" or "io_low"
	in contexts other than static storage.
	(avr_asm_output_aligned_decl_common): Move output of decls with
	attribute "address", "io", and "io_low" to...
	(avr_output_addr_attrib): ...this new function.
	(avr_asm_asm_output_aligned_bss): Remove output for decls with
	attribute "address", "io", and "io_low".
	(avr_encode_section_info): Rectify handling of decls with attribute
	"address", "io", and "io_low".

gcc/testsuite/
	PR target/112952
	* gcc.target/avr/attribute-io.h: New file.
	* gcc.target/avr/pr112952-0.c: New test.
	* gcc.target/avr/pr112952-1.c: New test.
	* gcc.target/avr/pr112952-2.c: New test.
	* gcc.target/avr/pr112952-3.c: New test.
parent cde6f108
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment