[Bug tree-optimization/64421] New: Incorrect vector function name generated for log
andrew.n.senkevich at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Dec 27 21:47:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64421
Bug ID: 64421
Summary: Incorrect vector function name generated for log
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: andrew.n.senkevich at gmail dot com
Created attachment 34340
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34340&action=edit
reduced test
Hi,
compilation failed with the following code in log.c:
#include <math.h>
#pragma omp declare simd notinbranch simdlen(2)
extern double log (double);
int N = 3200;
double b[3200];
double a[3200];
int main (void)
{
int i;
#pragma omp simd
for (i = 0; i < N; i += 1)
{
b[i] = log (a[i]);
}
return (0);
}
gcc log.c -fopenmp -ffast-math -O1
/tmp/ccjc6yPN.s: Assembler messages:
/tmp/ccjc6yPN.s:37: Error: invalid operands (*UND* and *UND* sections) for `*'
gcc log.c -fopenmp -ffast-math -O1 -S
cat log.s
. . . . .
call _ZGVbN2v_*__log_finite
. . . . .
It seems because of wrong asm keyword handling, reduced test is:
#pragma omp declare simd notinbranch simdlen(2)
extern double log (double) __asm__ ("" "__log_finite") __attribute__
((__nothrow__ , __leaf__));
int N = 3200;
double b[3200];
double a[3200];
int main (void)
{
int i;
#pragma omp simd
for (i = 0; i < N; i += 1)
{
b[i] = log (a[i]);
}
return (0);
}
gcc -v
. . . . .
Target: x86_64-unknown-linux-gnu
. . . . .
gcc version 5.0.0 20141226 (experimental) (GCC)
More information about the Gcc-bugs
mailing list