- Aug 08, 2007
-
-
Chris Lattner authored
EmitExprWithUsualUnaryConversions. llvm-svn: 40929
-
Steve Naroff authored
Move the function/array conversion for ParmVarDecl's from Sema::ParseIdentifierExpr() to Sema::ParseParamDeclarator(). After discussing this with Chris, we decided this approach has more immediate benefit (though we loose some information in the AST). The comment below should describe more (if interested). llvm-svn: 40907
-
- Aug 07, 2007
-
-
Chris Lattner authored
llvm-svn: 40901
-
- Aug 05, 2007
-
-
Steve Naroff authored
Remove a space from "typeof" printing. It was causing the following error... [dylan:clang/test/Parser] admin% ../../../../Debug/bin/clang -parse-ast-check typeof.c Warnings expected but not seen: Line 21: incompatible types assigning 'typeof(*pi) const' to 'int *' Warnings seen but not expected: Line 21: incompatible types assigning 'typeof(*pi) const' to 'int *' Also corrected a typo from my previous commit. llvm-svn: 40832
-
Steve Naroff authored
Make sure the good old "function/array conversion" is done to function parameters. This resulted in the following error... [dylan:clang/test/Parser] admin% cat parmvardecl_conversion.c // RUN: clang -parse-ast-check %s void f (int p[]) { p++; } [dylan:clang/test/Parser] admin% clang -parse-ast-check parmvardecl_conversion.c Errors seen but not expected: Line 3: cannot modify value of type 'int []' With this fix, the test case above succeeds. llvm-svn: 40831
-
- Aug 04, 2007
-
-
Chris Lattner authored
struct X { int A; }; void foo() { struct X s; int i; i = __builtin_choose_expr(0, s, i); } compiles to: %tmp = load i32* %i ; <i32> [#uses=1] store i32 %tmp, i32* %i wow :) llvm-svn: 40801
-
Chris Lattner authored
llvm-svn: 40800
-
Chris Lattner authored
llvm-svn: 40799
-
Chris Lattner authored
llvm-svn: 40798
-
Steve Naroff authored
Chris suggested this, since it simplifies the code generator. If this features is needed (and we don't think it is), we can revisit. The following test case now produces an error. [dylan:~/llvm/tools/clang] admin% cat t.c typedef __attribute__(( ocu_vector_type(4) )) float float4; static void test() { float4 vec4; vec4.rg.g; vec4.rg[1]; } [dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang t.c t.c:8:12: error: vector component access limited to variables vec4.rg.g; ^~ t.c:9:12: error: vector component access limited to variables vec4.rg[1]; ^~~ 2 diagnostics generated. llvm-svn: 40795
-
- Aug 03, 2007
-
-
Steve Naroff authored
Implement __builtin_choose_expr. llvm-svn: 40794
-
Steve Naroff authored
Add a test case to validate code gen for typeof/builtin_types_compatible. This test case currently generates the following unexpected warnings (when compared with gcc). [dylan:clang/test/Parser] admin% ../../../../Debug/bin/clang -parse-ast-check builtin_types_compatible.c Warnings seen but not expected: Line 28: expression result unused Line 29: expression result unused Line 30: expression result unused Line 31: expression result unused Line 32: expression result unused Line 33: expression result unused llvm-svn: 40789
-
Chris Lattner authored
llvm-svn: 40788
-
Chris Lattner authored
llvm-svn: 40787
-
Chris Lattner authored
Rename AddrLabel and OCUVectorComponent -> AddrLabelExpr and OCUVectorElementExpr respectively. This is for consistency with other expr nodes end with *Expr. llvm-svn: 40785
-
Chris Lattner authored
llvm-svn: 40783
-
Chris Lattner authored
vec2.yx = vec2; // reverse llvm-svn: 40782
-
Chris Lattner authored
vec2.x = f; llvm-svn: 40781
-
Chris Lattner authored
llvm-svn: 40780
-
Chris Lattner authored
llvm vector shuffle instead of a bunch of insert/extract operations. For: vec4 = vec4.yyyy; // splat Emit: %tmp1 = shufflevector <4 x float> %tmp, <4 x float> undef, <4 x i32> < i32 1, i32 1, i32 1, i32 1 > instead of: %tmp1 = extractelement <4 x float> %tmp, i32 1 %tmp2 = insertelement <4 x float> undef, float %tmp1, i32 0 %tmp3 = extractelement <4 x float> %tmp, i32 1 %tmp4 = insertelement <4 x float> %tmp2, float %tmp3, i32 1 %tmp5 = extractelement <4 x float> %tmp, i32 1 %tmp6 = insertelement <4 x float> %tmp4, float %tmp5, i32 2 %tmp7 = extractelement <4 x float> %tmp, i32 1 %tmp8 = insertelement <4 x float> %tmp6, float %tmp7, i32 3 llvm-svn: 40779
-
Chris Lattner authored
llvm-svn: 40778
-
Chris Lattner authored
llvm-svn: 40777
-
Chris Lattner authored
like this: typedef __attribute__(( ocu_vector_type(4) )) float float4; float4 test1(float4 V) { return V.wzyx+V; } to: _test1: pshufd $27, %xmm0, %xmm1 addps %xmm0, %xmm1 movaps %xmm1, %xmm0 ret and: _test1: mfspr r2, 256 oris r3, r2, 4096 mtspr 256, r3 li r3, lo16(LCPI1_0) lis r4, ha16(LCPI1_0) lvx v3, r4, r3 vperm v3, v2, v2, v3 vaddfp v2, v3, v2 mtspr 256, r2 blr llvm-svn: 40771
-
Chris Lattner authored
We can now codegen: vec4.xy; as nothing! llvm-svn: 40769
-
Chris Lattner authored
llvm-svn: 40768
-
Chris Lattner authored
llvm-svn: 40766
-
Chris Lattner authored
llvm-svn: 40765
-
Chris Lattner authored
llvm-svn: 40764
-
Chris Lattner authored
llvm-svn: 40763
-
Chris Lattner authored
llvm-svn: 40762
-
- Aug 02, 2007
-
-
Chris Lattner authored
llvm-svn: 40761
-
Chris Lattner authored
llvm-svn: 40760
-
Chris Lattner authored
llvm-svn: 40759
-
Reid Spencer authored
llvm-svn: 40734
-
Reid Spencer authored
llvm-svn: 40733
-
Reid Spencer authored
llvm-svn: 40732
-
Chris Lattner authored
llvm-svn: 40719
-
Chris Lattner authored
llvm-svn: 40717
-
Steve Naroff authored
Tweak to Expr::isIntegerConstantExpr...make sure the result is appropriately size for TypesCompatibleExpr's. llvm-svn: 40716
-
Chris Lattner authored
This is important in insane cases like the one dannyb sent me recently: #define F0(a) void a(){} #define F1(a) F0(a##0) F0(a##1) F0(a##2) F0(a##3) F0(a##4) F0(a##5) F0(a##6) F0(a##7) #define F2(a) F1(a##0) F1(a##1) F1(a##2) F1(a##3) F1(a##4) F1(a##5) F1(a##6) F1(a##7) #define F3(a) F2(a##0) F2(a##1) F2(a##2) F2(a##3) F2(a##4) F2(a##5) F2(a##6) F2(a##7) #define F4(a) F3(a##0) F3(a##1) F3(a##2) F3(a##3) F3(a##4) F3(a##5) F3(a##6) F3(a##7) #define F5(a) F4(a##0) F4(a##1) F4(a##2) F4(a##3) F4(a##4) F4(a##5) F4(a##6) F4(a##7) #define F6(a) F5(a##0) F5(a##1) F5(a##2) F5(a##3) F5(a##4) F5(a##5) F5(a##6) F5(a##7) F6(f) cpp is great. :) llvm-svn: 40715
-