Match pointer of compatible vection types.
// rdar://9208404 llvm-svn: 129536
This commit is contained in:
parent
af670a81e9
commit
bc2ee9382c
|
@ -1661,6 +1661,14 @@ bool Sema::IsPointerConversion(Expr *From, QualType FromType, QualType ToType,
|
|||
return true;
|
||||
}
|
||||
|
||||
if (FromPointeeType->isVectorType() && ToPointeeType->isVectorType() &&
|
||||
Context.areCompatibleVectorTypes(FromPointeeType, ToPointeeType)) {
|
||||
ConvertedType = BuildSimilarlyQualifiedPointerType(FromTypePtr,
|
||||
ToPointeeType,
|
||||
ToType, Context);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||||
// rdar://9208404
|
||||
|
||||
typedef int MP4Err;
|
||||
typedef float Float32;
|
||||
typedef float float32_t;
|
||||
typedef __attribute__((neon_vector_type(4))) float32_t float32x4_t;
|
||||
typedef float vFloat __attribute__((__vector_size__(16)));
|
||||
typedef vFloat VFLOAT;
|
||||
typedef unsigned long UInt32;
|
||||
|
||||
extern int bar (float32x4_t const *p);
|
||||
|
||||
int foo (const Float32 *realBufPtr) {
|
||||
float32x4_t const *vRealPtr = (VFLOAT *)&realBufPtr[0];
|
||||
return bar(vRealPtr);
|
||||
}
|
||||
|
||||
MP4Err autoCorrelation2nd_Neon(Float32 *alphar, Float32 *alphai,
|
||||
const Float32 *realBufPtr,
|
||||
const Float32 *imagBufPtr,
|
||||
const UInt32 len)
|
||||
{
|
||||
float32x4_t const *vRealPtr = (VFLOAT *)&realBufPtr[0];
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue