[LLVMbugs] [Bug 6822] New: clang assertion when compiling reinterpret_cast<float3>(float4_var)

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Apr 12 10:41:27 PDT 2010


http://llvm.org/bugs/show_bug.cgi?id=6822

           Summary: clang assertion when compiling
                    reinterpret_cast<float3>(float4_var)
           Product: new-bugs
           Version: trunk
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: bixia.zheng at amd.com
                CC: llvmbugs at cs.uiuc.edu


float3 and float4 are defined by the test case below.
Clang seems to believe that BitWidth(float3) = 4 * BitWidth(float) while LLVM
Core VectorType::getBitWidth(float3) returns 3 * BitWidth(float). This
discrepancy causes the assertion error. Where are you doing to fix this, Clang
or LLVM Core?
Thanks for your attention to this bug!

command line:
================
clang -emit-llvm -ObjC++ -S vector03.c

error message:
================
Assertion failed: castIsValid(getOpcode(), S, Ty) && "Illegal BitCast", file
... llvm\lib\VMCore\Instructions.cpp, line 2732

test case:
================
typedef float float4 __attribute__((ext_vector_type(4)));
typedef float float3 __attribute__((ext_vector_type(3)));
//typedef float float2 __attribute__((ext_vector_type(2)));

typedef struct _mystruct {
    float3 field1;
    float field2;
    float field3;
    float field4;
    float field5;
} mystruct;

float3 foo() {
  float3 vec3;
  float4 vec4;
  vec4 = sizeof(mystruct);
  vec3 = reinterpret_cast<float3>(vec4);

  return vec3;
}

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list