[llvm-commits] [llvm-gcc-4.2] r102302 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Chris Lattner sabre at nondot.org
Sat Apr 24 22:51:07 PDT 2010


Author: lattner
Date: Sun Apr 25 00:51:07 2010
New Revision: 102302

URL: http://llvm.org/viewvc/llvm-project?rev=102302&view=rev
Log:
fix PR6913, making llvm-gcc diagnose test/FrontendC/crash-invalid-array.c
with "error: invalid use of array with unspecified bounds", like GCC does,
instead of ICE'ing.

Clang produces the much nicer:

test/FrontendC/crash-invalid-array.c:15:9: error: subscript of pointer to incomplete type 'int []'
       p[i][i] = i;
       ~^

:)



Modified:
    llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=102302&r1=102301&r2=102302&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Sun Apr 25 00:51:07 2010
@@ -7061,7 +7061,11 @@
   if (VOID_TYPE_P(TREE_TYPE(ArrayTreeType)))
     return LValue(Builder.CreateGEP(ArrayAddr, IndexVal), 1);
 
-  Value *TypeSize = Emit(array_ref_element_size(exp), 0);
+  tree EltSize = array_ref_element_size(exp);
+  if (EltSize == 0)  // Force emit an error on invalid case.
+    EltSize = size_in_bytes(ElementType);
+  
+  Value *TypeSize = Emit(EltSize, 0);
   TypeSize = CastToUIntType(TypeSize, IntPtrTy);
   IndexVal = Builder.CreateMul(IndexVal, TypeSize);
   unsigned Alignment = 1;





More information about the llvm-commits mailing list