Avr-gcc Bugs

Wechseln zu: Navigation, Suche

Bugs[Bearbeiten]

PR Description Note
57597 ICE: in get_section, Segmentation fault with -fmerge-all-constants varasm
57503 Expand uses wrong multiply routine
57482 --help=optimizers reports a wrong list
56479 ICE: can't allocate two 4-byte variables to "a" for inline asm
56442 postreload uses clobbered register
56183 Problems with register allocation meta-bug
56164 ICE: spill fail with __flash keyword
54330 Wrong optimization for code from fixed-bit.c
53615 Buffer overflow in the compiler?
53372 Section attribute ignored with address space
52663 ICE: in purge_dead_edges, at cfgrtl.c:2462
52472 ICE: in convert_debug_memory_address, at cfgexpand.c (__memx) -g
52305 ICE: in avr_print_operand: unknown mode (const_double) asm
50925 ICE: spill failure in newlib build
50807 Constructor writing to RAM for variable in Flash
50739 nameless error with -fmerge-all-constants
49775 ICE: in based_loc_descr dwarf-2
42204 update_eliminables should be called in reload after something changes
36571 Default untyped return for AVR is byte register.

Binutils / avr-libc[Bearbeiten]

PR Description Note
binutils
16005 Linker crash with --relax
15043 Support -mdes and -matomics
14406 Support .progmem<N>.data sections in the default ld script
13812 .trampolines location in linker script cause "internal error: out of range error"
12494 Relaxation leads to wrong code optimization
binutils fixed
14058 Internal overflow error on > 128kB flash 2.23
13899 Wrong relaxation of R_AVR_16_PM with gs() 2.23
13697 Wrong symbol values with --gc-sections and empty .data 2.23
13503 Support RELOCs to represent a byte 2.23
13410 Relocation truncated to fit: R_AVR_13_PCREL against symbol... 2.23
12742 mingw32 and --enable-lto in Canadian cross build 2.23
12161 Unconforming ELF file causes SIGSEGV in avr-ld 2.23, 2.22.x
avr-libc
38135 Install stdfix-avrlibc.h
38125 Distribute gcrt1.S
36571 stdint.h: INTn_C not standard compliant
36454 string.h: Error for long long in C90 1.8.1
35407 Missing multilib versions for tiny-stack targets
34695 stdint.h ixed-width int types without __attribute__((mode))
33698 RJMP/RCALL can cause "relocation truncated to fit: R_AVR_13_PCREL" linker error

Optimierung[Bearbeiten]

PR Optimization Note
55181 Expensive shift loop instead of bit-testing instruction
54816 shift is better than widening mul
54378 Code bloat for long << shifts
53049 expand/TER unappropriate moving unspec volatile middle-end
52664 gcc.dg/tree-ssa/pr31261.c fails ssa
52278 inefficient register allocation for SUBREGs RA
52025 -fcaller-saves triggers a frame without need RA
49807 Missed byte (subreg) extraction when storing to volatile mem
49491 Superfluous move because of unnecessary spill for 2-operand insn RA
41076 pessimal code for logical OR of 8-bit fields TODO, patch upstream
39760 register allocation costs are not well described on AVR
38629 target-specific parameters for inline heuristics not defined for AVR
36884 ifcvt poor optimization RTL-optimize, -fno-if-conversion
36561 store using long array index not hoisted out of loop
30908 tree cost for types which are > WORD_SIZE
27663 missed-optimization transforming a byte array to unsigned long patch upstream
20296 Speeding up small interrupts
18065 usual arithmetic conversion not applying correctly
11180 Optimization decrease performance of struct assignment.
3507 appalling optimisation with sub/cmp on multiple targets

Debug-Info, Build, ...[Bearbeiten]

PR Debug-Info, Build, Ada, Fortran Note

Erweiterungen[Bearbeiten]

PR Extensions Note
57390 Support fixed-point types in C++
49857 Put constant switch-tables into flash
43745 Put VTABLES in Flash

Ungültig[Bearbeiten]

PR Invalid Note
61044 Computed goto with label differences does not work → Label differences not suported on AVR: Labels as Values
57501 crttn24a.o missing path with -mmcu=attiny24a → Caused by AVR-LibC #35407
52474 mulhisi3: arithmetics produce completely wrong result → Caused by patch from Atmel
 
PR Won't fix Note
56254 Support __builtin_avr_delay_cycles with non-const delays
38342 __attribute__((progmem)) not propagated from typedef to data avr-libc #33716
38549 eicall not properly set for > 128K program space 50820

Fixed[Bearbeiten]

PR Fixed Note
61443 ICE: unrecognizable insn when varargs argument is indirect addr-space access 4.9.1, 4.8.4
61055 Wrong test instruction after increment (-O1 or -fno-peephole2) 4.9.1, 4.8.3, 4.7.4
60991 Stack corruption when using __memx pointers or __int24 in large stack frame 4.9.1, 4.8.3, 4.7.4
56833 Postreload uses clobbered register 4.9.0
 
60486 Superfluous or missing comparision after addition or subtraction 4.8.3
59396 Wrong warning with ISR() and LTO 4.8.3, 4.8.1
57844 ICE: unrecognizable addqi3 insn with -msp8 and frame size of 128 bytes 4.8.2, 4.7.4
57631 Use assembler name for sanity checking of ISR names 4.8.2, 4.7.4
57516 Incorrect fixed-point rounding result in the overflow case 4.8.2
57506 Some devices are present twice in avr-mcus.def 4.8.2, 4.7.4
56263 Provide strict address-space checking 4.8.0
56064 Fold VIEW_CONVERT_EXPR with FIXED_CST 4.8.0 tree-ssa
54814 ICE: Hundreds of spill fails in test suite for class R0_REG 4.8.0.
54854 Remove -mshort-calls option 4.8.0
54815 missed optimization with operations with constant operands 4.8.0
54222 ISO/IEC TR 18037 fixed-point support 4.8.0
53344 Assemble 3-byte symbols 4.8.0
 
55974 Wrong suffix for __INT24_MAX__, __UINT24_MAX__ with -mint8 4.7.3
55897 Allocate __memx data to .progmemx.data 4.7.3
55243 [ada] STAMP variable is not defined in t-avr 4.7.3
50293 -flto fails if GCC is installed in directory with space in path name 4.7.3
54536 Incorrect library_name for at90usb1287 4.7.2, 4.6.4
54476 Time/memory hog with __builtin_avr_delay_cycles (-1ul) on 64-bit hosts 4.7.2
54461 Add configure option for better AVR-Libc integration 4.7.2
54220 Naked functions need frame at -O0 4.7.2, 4.6.4
53595 Code size increase of +10% between two 4.7.1 snapshots 4.7.2
53448 __attribute__((aligned(2))) ignored 4.7.1
53256 Attribute 'interrupt' shall override attribute 'signal' 4.7.1
53065 ICE: in replace_reg_with_saved_mem, at caller-save.c:1125 4.7.1
53033 Wrong register number for 3-byte loads via X 4.7.1
52737 -mtiny-stack shall not influence multilib selection 4.7.1
52692 Add support for avr-specific built-ins + LTO 4.7.1
52545 SECTION_EXCLUDE flag clobbers SECTION_MACH_DEP 4.7.1 other
52543 lower-subreg.c: code bloat of 300%-400% for multi-word memory splits HACK 4.7.1 middle-end
52508 HAVE_RAMPZ as condition to set RAMPZ prior to flash-read is no more appropriate 4.7.1
52507 movmem loop for __memx address space uses wrong loop label 4.7.1
52506 XMEGA: Wrong order of save/restore of RAMPX/Y/Z/D SFRs in ISR pro-/epilogue 4.7.1
52505 __memx address space reading unintentionally from RAM 4.7.1
52496 avr-specific built-ins missing memory barrier 4.7.1
52488 ICE: unreconizable addqi -2000 insn 4.7.1
52484 Missing __memx insn because of wrong register footprint 4.7.1
52461 XMEGA+EBI: RAMPZ clobbered 4.7.1
51527 ICE: 'convert_to_integer' enters infinite recursion for __int24 4.7.1 c
46261 ICE: when compiled with -mint8 4.7.1, 4.6.4, 4.5.4
52261 Add XMEGA support 4.7.0
52148 ICE: spill_failure for movmemhi 4.7.0
51782 Missing address-space information leads to wrong code 4.7.0 middle-end
51425 no SBIS/SBIC instructions 4.7.0
51409 Building avr-gcc fails if configured for other languages than from C family 4.7.0
51345 Devices with 8-bit SP need their own multilib(s) 4.7.0 ABI
51050 ICE: invalid rtl sharing found in the insn (ATtiny26) 4.7.0
51002 SP_H register is used even on targets that do not have it (ATtiny26) 4.7.0
50931 Support a 24-bit scalar integer mode 4.7.0
50910 Inefficient division by 2 4.7.0
50887 Support ACCUMULATE_OUTGOING_ARGS 4.7.0
50775 Register allocator sets up frame and frame pointer with low register pressure 4.7.0, ra
50616 ICE: lto1.exe: invalid resolution in the resolution file 4.7.0, lto, mingw32
50566 Add support for better logging by means of -mlog= 4.7.0
50465 Use insn attribute to depict if and how instruction lengths have to be adjusted 4.7.0
50449 Loading some 32-bit constants not optimal 4.7.0
50448 Missed optimization accessing struct component with integer address 4.7.0 middle-end
50447 Better support of AND, OR, XOR and PLUS with constant integers 4.7.0
50446 Implement rotate patterns with offset 1 4.7.0
50358 Implement [u]maddqihi4 [u]msubqihi4 patterns 4.7.0
50063 wrong code for gcc.dg/torture/pta-ptrarith-3.c 4.7.0
49939 Skip 2-word instructions if applicable 4.7.0
49903 Redundant comparisons in binary-seach switch/case expansion 4.7.0 FIXME
49881 Inefficient stack manipulation around calls 4.7.0
49868 Implement named address space to place/access data in flash memory 4.7.0 ← binutils PR13503
49864 ICE: in maybe_record_trace_start, at dwarf2cfi.c:2439 4.7.0
49687 Missed optimization for widening MUL 4.7.0 ABI
49313 Inefficient libgcc implementations for avr 4.7.0 ABI
47597 ICE: call frame debugging information is not handled when case is post_dec 4.7.0
46278 avr-gcc 4.5.1 doing suboptimal reloads using X 4.7.0
45099 Warning could be issued for use of register variables that will fail. 4.7.0
43746 -fmerge-constants and -fmerge-all-constants don't work at AVR target 4.7.0
42210 optimizing assignment to a bit field 4.7.0
39621 Delaying operation to end of function causes high stack usage 4.7.0
36467 Missed optimization with pointer arithmetic and mul* 4.7.0
35860 [4.3/4.4/4.5/4.6 Regression] [avr] code bloat caused by -fsplit-wide-types 4.7.0
34888 Stack patterns not optimal 4.7.0
34792 c++ worse than c compiler at 8-bit optimisations 4.7.0
34791 optimisation of 8-bit logic sometimes fails 4.7.0
34790 no sibling call optimisation 4.7.0
34789 sometimes the compiler keeps addresses in registers unnecessarily 4.7.0
33049 bit extraction non optimal, inversing logic solves problem 4.7.0
29560 Poor optimization for byte shifts 4.7.0
29524 [4.3/4.4/4.5/4.6 Regression] Too much RAM used: __clz_tab[] linked 4.7.0
18145 Do not emit __do_copy_data or __do_clear_bss if .data or .bss is empty. 4.7.0
17994 avr-gcc does not output a dwarf2 .debug_frame section 4.7.0
 
52741 -mtiny-stack must not make assumptions on upper 8 bits of SP/FP 4.6.4
51756 Wrong warning: uninitialized variable put into program memory area 4.6.3
51374 insn combine reorders volatile memory accesses 4.6.3 middle-end
50820 Use EIND consistently 4.6.2, 4.5.4
50816 Discriminators are emitted in DWARF 2 format 4.6.2
50652 Incorrect data start value for ATmega164A 4.6.2
50289 call-prologues saving/restoring global register variables 4.6.2
49824 Missing documentation for OS_task and OS_main attributes 4.6.2
49764 [avr-g++] Rejects attribute progmem 4.6.2
49487 ICE: bytewise rotate 4.6.2
46779 wrong code generation for values held in R28/R29 4.6.2, 4.5.4
34734 attribute((progmem)) not handled properly in C++ for AVRs 4.6.2 → avr-libc #33716
44643 ICE: in c-typeck.c 4.6.2 → avr-libc #32988
39633 missing 8-bit comparison (*cmpqi) 4.6.2, 4.5.4
39386 different computation results for O1 and O0 executables 4.6.2
48459 [4.6/4.7 Regression] avr: Assertion failure with -gdwarf-2 4.6.1
45263 registers used in __do_global_ctors can get clobbered 4.6.1, 4.5.4
 
45261 Doesn't indicate failure status when it doesn't support (attiny2313A) 4.5.3
42240 [4.3/4.4 Regression] wrong epilogue on naked function 4.5.3
41885 Rotate patterns do not correctly consider overlap. 4.5.0

Weblinks[Bearbeiten]