[Bug c/81156] New: GCC fails to compile a formula with tgmath.h
equilibrium556 at gmx dot de
gcc-bugzilla@gcc.gnu.org
Wed Jun 21 17:27:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81156
Bug ID: 81156
Summary: GCC fails to compile a formula with tgmath.h
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: equilibrium556 at gmx dot de
Target Milestone: ---
Created attachment 41603
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41603&action=edit
C file that fails to compile with GCC
Hey, I ran into some problems compiling code that contained a specific formula.
I am using the type generic tgmath.h header because I am switching between
float and double for performance testing reasons.
If I include the tgmath.h header, the code doesn't compile, GCC ends up filling
up all my RAM and doesn't succeed to compile the file. It compiles using the
math.h header without a problem.
Here's the code in question (also in the attachment):
/* memory_leak.c */
#include <stdio.h>
#include <stdlib.h>
#include <tgmath.h>
#ifdef TEST_SP
typedef float test_float;
#else
typedef double test_float;
#endif
int main(int argc, char *argv[]) {
int b = -1;
test_float a, c, d, e, f, g, h, i;
a = c = d = e = f = g = h = i = 1;
a = 2*b/abs(b)*sqrt(pow(sqrt(pow(c, 2) - pow(d, 2)) -
e*f*cos(g)*cos(h)/abs(b)*(i - 1), 2) + pow(d/2, 2));
return 0;
}
/* END */
Compile with:
gcc -o memory_leak -DTEST_SP -std=c99 memory_leak.c -lm
It ends up eating all the memory there is.
Doesn't work on current GCC 7.1.1 on Arch nor on an RHEL6 distro with GCC
4.4.7.
Works with GCC 5.3 in Cygwin.
Clang and ICC compile without problems as well on Linux.
More information about the Gcc-bugs
mailing list