The following testcase used to work in 4.1.1 but no longer does:

#define vector __attribute__((vector_size(16) ))
template<int INDEX>
vector signed int MyFunction(vector float value)  {}

template<int>
void MyFunction(float ){}

int main()
{
    vector float myVector;
    float myFloat;
    MyFunction<1>(myVector);
    MyFunction<1>(myFloat);
}

---- CUT ----
We get:
vector14.C: In function ‘int main()’:
vector14.C:12: error: no matching function for call to ‘MyFunction(float
__vector__&)’
vector14.C:13: error: call of overloaded ‘MyFunction(float&)’ is ambiguous
vector14.C:3: note: candidates are: int MyFunction(float) [with int INDEX = 1]
vector14.C:6: note:                 void MyFunction(float) [with int
<anonymous> = 1]


-- 
           Summary: [4.3/4.4 Regression] vector_size attribute lost in
                    function arguments for templates
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: blocker
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org


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

Reply via email to