Follow-up Comment #1, bug #41435 (project avr-libc):

This caused a bunch of confusion for me until I realized that ffreestanding
was causing _delay_ms to fail to compile for a ATmega32u4 device.

For reference, here are the errors I saw. It took a while to figure out that
_STDC_HOSTED_, set by ffreestanding, was making _delay_ms use old incompatible
assembly.


{standard input}: Assembler messages:
{standard input}:19: Error: constant value required
{standard input}:19: Error: register number above 15 required


The above was gcc error output from compiling this simple file:


#include <util/delay.h>
void foobar() {
  _delay_ms(1);
}


For reference, this is the output if I tell g++ to just compile to assembly:


        .file   "test.cpp"
__SP_H__ = 0x3e
__SP_L__ = 0x3d
__SREG__ = 0x3f
__tmp_reg__ = 0
__zero_reg__ = 1
        .text
.global _Z6foobarv
        .type   _Z6foobarv, @function
_Z6foobarv:
/* prologue: function */
/* frame size = 0 */
/* stack size = 0 */
.L__stack_usage = 0
        ldi r24,lo8(-96)
        ldi r25,lo8(15)
/* #APP */
 ;  110 "c:\program files
(x86)\avr8-gnu-toolchain\avr\include\util\delay_basic.h" 1
        1: subi r24A,1
        brne 1b
 ;  0 "" 2
/* #NOAPP */
        ret
        .size   _Z6foobarv, .-_Z6foobarv
        .ident  "GCC: (AVR_8_bit_GNU_Toolchain_3.5.4_1709) 4.9.2"


    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?41435>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/


_______________________________________________
AVR-libc-dev mailing list
AVR-libc-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/avr-libc-dev

Reply via email to