- Jul 17, 2007
-
-
Reid Spencer authored
This also avoids a fork bomb from the llvm-top/build script which doesn't know how to handle cycles in the dependence graph. llvm-svn: 39933
-
Chris Lattner authored
isPointerType and isVectorType to only look through a single level of typedef when one is present. For this invalid code: typedef float float4 __attribute__((vector_size(16))); typedef int int4 __attribute__((vector_size(16))); typedef int4* int4p; void test(float4 a, int4p result, int i) { result[i] = a; } we now get: t.c:5:15: error: incompatible types assigning 'float4' to 'int4' result[i] = a; ~~~~~~~~~ ^ ~ instead of: t.c:5:15: error: incompatible types assigning 'float4' to 'int __attribute__((vector_size(16)))' result[i] = a; ~~~~~~~~~ ^ ~ The rest of the type predicates should be upgraded to do the same thing. llvm-svn: 39932
-
Reid Spencer authored
llvm-svn: 39931
-
- Jul 16, 2007
-
-
Steve Naroff authored
Change DefaultFunctionArrayConversions and UsualUnaryConversions to return void. The caller needs to query the expression for the type. Since both these functions guarantee the expression contains a valid type, removed old/vacuous asserts (from code calling both of these routines). llvm-svn: 39930
-
Owen Anderson authored
dead stores on 400.perlbench. llvm-svn: 39929
-
Chris Lattner authored
SemaExpr.cpp:561: warning: dereferencing type-punned pointer will break strict-aliasing rules Patch by Benoit Boissinot! llvm-svn: 39928
-
Chris Lattner authored
llvm-svn: 39927
-
Owen Anderson authored
llvm-svn: 39926
-
Chris Lattner authored
llvm-svn: 39925
-
Reid Spencer authored
llvm-gcc build to succeed. Without this change it fails in libstdc++ compilation. This causes no regressions in dejagnu tests. However, someone who knows this code better might want to review it. llvm-svn: 39924
-
Dan Gohman authored
have an error, and refector out the code for binary operators into ConstantFoldBinaryFP and use it for all binary floating-point operations which may have an error. These functions still rely exclusively on errno to detect errors though. llvm-svn: 39923
-
Dan Gohman authored
which appears to be the intent. llvm-svn: 39922
-
Dan Gohman authored
llvm-svn: 39921
-
Dan Gohman authored
where it's interpreted as a comment, not part of the syntax. llvm-svn: 39920
-
Bill Wendling authored
llvm-svn: 39917
-
Bill Wendling authored
llvm-svn: 39916
-
Bill Wendling authored
llvm-svn: 39915
-
Reid Spencer authored
of the cyclic depndency between llvm and llvm-gcc-4-0. llvm-svn: 39910
-
Reid Spencer authored
llvm-svn: 39909
-
Bill Wendling authored
llvm-svn: 39907
-
Chris Lattner authored
accurate diagnostics. For test/Lexer/comments.c we now emit: int x = 000000080; /* expected-error {{invalid digit}} */ ^ constants.c:7:4: error: invalid digit '8' in octal constant 00080; /* expected-error {{invalid digit}} */ ^ The last line is due to an escaped newline. The full line looks like: int y = 0000\ 00080; /* expected-error {{invalid digit}} */ Previously, we emitted: constants.c:4:9: error: invalid digit '8' in octal constant int x = 000000080; /* expected-error {{invalid digit}} */ ^ constants.c:6:9: error: invalid digit '8' in octal constant int y = 0000\ ^ which isn't too bad, but the new way is better for the user, regardless of whether there is an escaped newline or not. All the other lexer-related diagnostics should switch over to using AdvanceToTokenCharacter where appropriate. Help wanted :). This implements test/Lexer/constants.c. llvm-svn: 39906
-
Chris Lattner authored
specifying the start of a token and a logical (phase 3) character number, returns a sloc representing the input character corresponding to it. llvm-svn: 39905
-
Chris Lattner authored
llvm-svn: 39904
-
Chris Lattner authored
llvm-svn: 39903
-
Chris Lattner authored
codegen to compile: int test(int *A, int *B) { return A-B; } into: _test: movl 4(%esp), %eax subl 8(%esp), %eax sarl $2, %eax ret instead of: _test: movl 4(%esp), %eax subl 8(%esp), %eax movl %eax, %ecx sarl $31, %ecx shrl $30, %ecx addl %ecx, %eax sarl $2, %eax ret llvm-svn: 39902
-
Chris Lattner authored
llvm-svn: 39901
-
Chris Lattner authored
llvm-svn: 39900
-
Chris Lattner authored
llvm-svn: 39899
-
Chris Lattner authored
llvm-svn: 39898
-
Chris Lattner authored
llvm-svn: 39897
-
Chris Lattner authored
llvm-svn: 39896
-
Chris Lattner authored
llvm-svn: 39895
-
Nick Lewycky authored
llvm-svn: 39894
-
Nick Lewycky authored
Always pass the constant as the second parameter to HowManyLessThans. Remove obsolete "isSigned" parameter. llvm-svn: 39893
-
Chris Lattner authored
information in the common case. On this invalid code: typedef float float4 __attribute__((vector_size(16))); typedef int int4 __attribute__((vector_size(16))); void test(float4 a, int4 *result, int i) { result[i] = a; } we now generate: t.c:5:15: error: incompatible types assigning 'float4' to 'int4' instead of: t.c:5:15: error: incompatible types assigning 'float4' to 'int __attribute__((vector_size(16)))' This implements test/Sema/typedef-retain.c llvm-svn: 39892
-
Chris Lattner authored
ParseArraySubscriptExpr. Notably, the new code doesn't have to think about canonical types at all. llvm-svn: 39891
-
Chris Lattner authored
the actual vectortype or pointertype when they return success. llvm-svn: 39890
-
Chris Lattner authored
llvm-svn: 39889
-
Chris Lattner authored
the result type of the expr node. Implement isIntegerConstantExpr for ImplicitCastExpr nodes the same was as for CastExpr nodes. Implement proper sign/zero extension as well as truncation and noop conversion in the i-c-e evaluator. This allows us to correctly handle i-c-e's like these: char array[1024/(sizeof (long))]; int x['\xBb' == (char) 187 ? 1: -1]; this implements test/Sema/i-c-e2.c llvm-svn: 39888
-
Chris Lattner authored
not all builtin types have size and alignment equal to pointers :) llvm-svn: 39887
-