<< Back to previous view

[PCC-373] long double complex vs long double Created: 30/Jul/11  Updated: 31/Jul/11

Status: Resolved
Project: pcc
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Jonathan Gray Assignee: Anders Magnusson
Resolution: Fixed Votes: 0
Environment: OpenBSD/i386 -current, pcc cvs


 Description   
/usr/local/bin/pcc -O2 -pipe -g -I/usr/src/lib/libm/src -I/usr/src/lib/libm/src/ld80 -c /usr/src/lib/libm/src/s_casinl.c -o s_casinl.o
/usr/src/lib/libm/src/s_casinl.c, line 106: operands of *= have incompatible types
/usr/src/lib/libm/src/s_casinl.c, line 107: operands of += have incompatible types

This works fine with at least gcc 4.2.1 and clang svn. Went back a few months in pcc cvs
history and the problem still occurs so it does not appear to be caused by recent changes.

smaller test case:

#include <complex.h>
int
main(void)
{
        long double complex ct = 1;
        long double b = 0.5;

        ct *= b;

        return (0);
}

 Comments   
Comment by Anders Magnusson [ 30/Jul/11 10:17 PM ]
Heh! It's the *= that isn't handled by pcc properly; ct = ct * b works as expected.
Comment by Anders Magnusson [ 31/Jul/11 09:39 AM ]
Fixed now.
Generated at Mon Dec 22 18:45:23 CET 2014 using JIRA Enterprise Edition, Version: 3.13.1-#333.