micro-ecc icon indicating copy to clipboard operation
micro-ecc copied to clipboard

GCC + `-Wpedantic` throws warning about `__int128`

Open fzi-haxel opened this issue 2 years ago • 1 comments

If the platform supports __int128, GCC throws the following warning if the -Wpedantic flag is set.

types.h:100:18: warning: ISO C does not support ‘__int128’ types [-Wpedantic]
  100 | typedef unsigned __int128 uECC_dword_t;

Here are three ways to avoid the GCC warning

  1. Use the __attribute__((mode(TI))) (similar to mbedtls)
typedef unsigned int uECC_dword_t __attribute__((mode(TI)));
  1. Use __extension__ GCC Documentation
__extension__ typedef unsigned __int128 uECC_dword_t;
  1. Just ignore -Wpedantic at this line
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
typedef unsigned __int128 uECC_dword_t;
#pragma GCC diagnostic pop

fzi-haxel avatar Dec 08 '23 13:12 fzi-haxel

Also hit this issue today:

└─▪ make
In file included from uECC_vli.h:7,
                 from uECC.c:4:
types.h:98:18: error: ISO C does not support ‘__int128’ types [-Werror=pedantic]
   98 | typedef unsigned __int128 uECC_dword_t;
      |                  ^~~~~~~~
cc1: all warnings being treated as errors
make: *** [makefile:129: uECC.o] Error 1


└─▪ cat /etc/issue
Ubuntu 22.04.4 LTS \n \l

┌─[±][master ?:3 ✗][micro-ecc]
└─▪ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

greenozon avatar Aug 19 '24 12:08 greenozon