[Bug c/47947] New: Varibles of type vector double are not copied correctly in gcc-4.5.1 and gcc-4.6.0

tkarkha at us dot ibm.com gcc-bugzilla@gcc.gnu.org
Tue Mar 1 17:25:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47947

           Summary: Varibles of type vector double are not copied
                    correctly in gcc-4.5.1 and gcc-4.6.0
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: critical
          Priority: P3
         Component: c
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: tkarkha@us.ibm.com
                CC: meissner@linux.vnet.ibm.com


Created attachment 23505
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23505
Tarfile for recreating the bug

When copying one vector double variable to another vector double variable, for
some variables the lower half of the variable is zeroed out.  The zeroing
results in incorrect computations.  This happens for all -O optimization
levels.

A small testcase is provided to recreate the bug.  In the testcase a simple
vector addition with vec_add() results in an incorrect result due to incorrect
copy.  Here is the ouptut from the testcase:
$ ./gccBugTest_GCC               
DEBUG:: u_in0 = <1.000000,2.000000,3.000000,4.000000>
DEBUG:: u_in1 = <5.000000,6.000000,7.000000,8.000000>
DEBUG::foo:: l_temp0 = <1.000000,2.000000,3.000000,4.000000>
DEBUG::foo:: l_temp1 = <5.000000,6.000000,7.000000,8.000000>
DEBUG::foo:: in0 HI = <1.000000,0.000000>
DEBUG::foo:: in0 LO = <3.000000,0.000000>
DEBUG::foo:: in1 HI = <5.000000,0.000000>
DEBUG::foo:: in1 LO = <7.000000,0.000000>
DEBUG::foo:: l_result HI = <6.000000,0.000000>
DEBUG::foo:: l_result LO = <10.000000,12.000000>
DEBUG::foo:: result:: l_temp2 = <6.000000,0.000000,10.000000,12.000000>
DEBUG:: u_out = <6.000000,0.000000,10.000000,12.000000>
$ 

The last DEBUG line should be DEBUG:: u_out =
<6.000000,8.000000,10.000000,12.000000>
          ^^^^^^^^



More information about the Gcc-bugs mailing list