Using the builtin function __builtin_add_overflow_p in gcc
11,724
Solution 1
__builtin_add_overflow_p
is supported by GCC 7 that has not been released yet
Solution 2
So I figured out how to use the built-in functions. Instead of using __builtin_add_overflow_p I used __builtin_add_overflow
#include <stdio.h>
#include <assert.h>
int main(void)
{
int x1 = -1073741826;
int y1 = -1073741826;
int z1 = x1 + y1;
int temp;
printf("%d\n", __builtin_add_overflow(x1, y1, &temp));
if (__builtin_add_overflow(x1, y1, &temp)) {
printf("overflow detected");
}
printf("%d\n", z1);
return 0;
}
Comments
-
Eagle almost 2 years
I was wondering on how to use this function, because I get an error when I do this:
#define INT_ADD_OVERFLOW_P(a, b) \ __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0); #include <stdio.h> #include <assert.h> __int main() { int x1 = -1073741826; int y1 = -1073741826; int z1 = x1+y1; INT_ADD_OVERFLOW_P ( x1, y1); printf("%d\n",z1); return 0; }
Compile_OUTPUT:
gcc -c -Wall -D DEBUG tempFile.c gcc tempFile.o -o tempFile Makefile:8: recipe for target 'tempFile' failed//new error after update
Compile_ERROR:
tempFile.c: In function ‘main’: tempFile.c:10:1: warning: implicit declaration of function ‘__builtin_add_overflow_p’ [-Wimplicit-function-declaration] tempFile.o: In function `main': tempFile.c:(.text+0x44): undefined reference to `__builtin_add_overflow_p' collect2: ld returned 1 exit status make: *** [tempFile] Error 1
Here is a link to the functions I want to use:
https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html
Here is the makefile that i'm using:
compiler=gcc CFLAGS=-c -Wall -D DEBUG programname=tempFile all: $(programname) $(programname): $(programname).o $(compiler) $(programname).o -o $(programname) $(programname).o: $(programname).c $(compiler) $(CFLAGS) $(programname).c clean: rm *o $(programname)