[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