| /* { dg-do assemble } */ |
| /* { dg-options "-mthumb -Os -save-temps" } */ |
| /* { dg-require-effective-target arm_thumb2_ok } */ |
| |
| #include <stdio.h> |
| |
| extern int lseek(int, long, int); |
| |
| int getFileStartAndLength (int fd, int *start_, size_t *length_) |
| { |
| int start, end; |
| size_t length; |
| |
| start = lseek (fd, 0L, SEEK_CUR); |
| end = lseek (fd, 0L, SEEK_END); |
| |
| if (start == -1 || end == -1) |
| return -1; |
| |
| length = end - start; |
| if (length == 0) |
| return -1; |
| |
| *start_ = start; |
| *length_ = length; |
| |
| return 0; |
| } |
| |
| /* { dg-final { scan-assembler-times "pop" 2 } } */ |
| /* { dg-final { scan-assembler-times "beq" 3 } } */ |
| /* { dg-final { object-size text <= 54 { target { ! arm*-*-uclinuxfdpiceabi } } } } */ |