bugAVR C Runtime Library - Bugs: bug #41435, math library functions in...


bug #41435: math library functions in uril/delay.h

Submitted by:  Jaakko Kantoj√§rvi <raphendyr>
Submitted on:  Sun Feb 2 16:13:34 2014  
Category: HeaderSeverity: 3 - Normal
Priority: 5 - NormalItem Group: Header files
Status: NonePercent Complete: 0%
Assigned to: NoneOpen/Closed: Open
Release: UnknownFixed Release: None

Add a New Comment (Rich MarkupRich Markup):

You are not logged in

Please log in, so followups can be emailed to you.


Sun Feb 2 16:13:34 2014, original submission:

New version of _delay_ms (the one using __builtin_avr_delay_cycles) uses math functions fabs and ceil.

Code expects that when run on hosted and optimized compilation these calls are optimized away. As this is impossible in freestanding environment there is macro test (_STDC_HOSTED_) and code fallback to old code.

This is kind of ok, but there is possibility to make this otherwise.

Following code works in freestanding environment:
static void delay_ms(double ms) __attribute_ ((unused));
static void _delay_ms(double ms) {
extern void __builtin_avr_delay_cycles(unsigned long);
extern double __builtin_fabs(double);
extern double __builtin_ceil(double);

double tmp = ((F_CPU) / 1e3) * ms;
uint32_t ticks_dc = (uint32_t)(__builtin_ceil(__builtin_fabs(tmp)));


As we can see from above, we could use __builtin_fabs and __builtin_ceil in delay.h instead of expecting the compiler to use them.

I think this is better as we already use __buildin_avr_delay_cycles which requires build time constant argument, thus we can use __builtin_fabs and __builtin_ceil as we know their arguments are built time constant.

Jaakko Kantojärvi <raphendyr>


(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):

No files currently attached


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -unavailable- added by raphendyr (Submitted the item)

    Please enter the title of George Orwell's famous dystopian book (it's a date):



    No Changes Have Been Made to This Item

    Back to the top

    Powered by Savane 3.1-cleanup1