summaryrefslogtreecommitdiff
path: root/ast_to_hir.cpp
AgeCommit message (Collapse)Author
2010-04-02Test for the type being different in parameter_lists_match.Eric Anholt
Fixes CorrectFuncOverload.frag.
2010-04-02Reject non-float varyings.Eric Anholt
Fixes varying2.frag.
2010-04-02Fix error handling of logic operators.Eric Anholt
They were always throwing a type error because type wasn't being set.
2010-04-02Emit errors for unfinished ast_to_hir expression operations.Eric Anholt
2010-04-02Fix ast_logic_not handling to be unary, not binary.Eric Anholt
2010-04-02Add errors for type results of other expressions.Eric Anholt
2010-04-02Emit errors from failure in arithmetic_result_type.Eric Anholt
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
2010-04-02Compute the constant value of a constant initializer.Eric Anholt
Fixes constFunc.frag.
2010-04-02Allow initializers of constant values to succeed.Eric Anholt
This regresses constFunc.frag, but that's just unexpectedly passing because of the FINISHME just above.
2010-04-02Don't create a parameter declaration for a (void) parameter.Eric Anholt
Fixes segfaults in a shader consisting of just: void main(void) { } Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
2010-04-01Track max accessed array element, reject additional out-of-bounds accessesIan Romanick
For unsized arrays, we can't flag out-of-bounds accesses until the array is redeclared with a size. Track the maximum accessed element and generate an error if the declaration specifies a size that would cause that access to be out-of-bounds. This causes the following tests to pass: glslparsertest/shaders/array10.frag
2010-04-01Begin processing ast_array_index nodesIan Romanick
This causes the following tests to pass: glslparsertest/shaders/parser3.frag glslparsertest/shaders/varying3.frag (also generates spurious error)
2010-04-01Allow unsized arrays to be redeclared with a sizeIan Romanick
Test glslparsertest/shaders/array11.frag now passes for the right reason.
2010-03-31Add ast_function::hirIan Romanick
ast_function::hir consists of bits pulled out of ast_function_definition::hir. In fact, the later uses the former to do a lot of its processing. Several class private data fields were added to ast_function to facilitate communicate between the two. This causes the following tests to pass: glslparsertest/shaders/CorrectModule.frag This causes the following tests to fail. These shaders were previously failing to compile, but they were all failing for the wrong reasons. glslparsertest/shaders/function9.frag glslparsertest/shaders/function10.frag
2010-03-31Use ir_variable::clone to copy parameters to the function bodyIan Romanick
Several other code movements were also done. This partitions this function into two halves. The first half processes the prototype part, and the second have processes the actual function definition. The coming patch series will parition ast_function_definition::hir into (at least) two separate functions.
2010-03-31Minor cleanups in ast_function_definition::hirIan Romanick
2010-03-31Add ir_function::iterator to iterate over function signaturesIan Romanick
2010-03-31Use ir_function::add_signature to create link between function and signatureIan Romanick
ir_function_signature now has a pointer back to the ir_function that owns it.
2010-03-31Move type_specifier_to_glsl_type to ast_type_specifier::glsl_typeIan Romanick
This make is easily accessible from other modules.
2010-03-31Test that const declarations include initializers.Eric Anholt
Fixes dataType6.frag, and also array2.frag for an unexpected but valid reason.
2010-03-31Reject declarations with 'in' or 'out' qualifiersIan Romanick
'in' and 'out' can only be used in function parameter lists or at global scope (1.30 and later). This change enforces this.
2010-03-31Fix comment bug and printf bug in previous commitIan Romanick
2010-03-31Require that 'uniform' and 'varying' variables be declared at global scopeIan Romanick
This causes the following tests to pass: glslparsertest/shaders/uniform.frag glslparsertest/shaders/varying.frag
2010-03-31Slightly refector checks for declarations that must be at global scopeIan Romanick
2010-03-31Implement logical operators.Eric Anholt
Fixes parser9.frag.
2010-03-31Test that variable names don't use the reserved gl_ prefix.Eric Anholt
Fixes identifier2.frag.
2010-03-30Test that discard only appears in the fragment shader.Eric Anholt
Fixes fragmentOnly4.vert.
2010-03-30Test that main doesn't take any parameters.Eric Anholt
Fixes main2.vert.
2010-03-30Test that a non-void function returns a value.Eric Anholt
2010-03-30Test that a void function doesn't return a value.Eric Anholt
Fixes function1.frag.
2010-03-30Fix unused variable warning.Eric Anholt
2010-03-30Forbid array comparisons in GLSL 1.10Ian Romanick
This causes the following tests to pass: glslparsertest/shaders/array3.frag
2010-03-30Begin handling array declarationsIan Romanick
This causes the following tests to pass: glslparsertest/shaders/array4.frag glslparsertest/shaders/array5.frag This causes the following tests to fail. These shaders were previously failing to compile, but they were all failing for the wrong reasons. glslparsertest/shaders/array3.frag
2010-03-29Arrays are not allowed as vertex shader inputs in GLSL 1.30 eitherIan Romanick
2010-03-29Add some checking for vertex shader inputs / attributesIan Romanick
This causes the following tests to pass: glslparsertest/shaders/attribute.vert glslparsertest/shaders/attribute1.vert glslparsertest/shaders/attribute2.vert
2010-03-29Use call-by-reference for apply_implicit_conversionIan Romanick
I'm not sure if this is a win or not. It makes the code in apply_implicit_conversion more clear, but it obscures the fact that it may change the pointers.
2010-03-29Apply implicit conversions to ?: operatorIan Romanick
2010-03-29Apply implicit conversions to equality operatorsIan Romanick
2010-03-29Apply implicit conversions to relational operatorsIan Romanick
2010-03-29Apply implicit conversions to arithmetic operatorsIan Romanick
2010-03-29Implement HIR conversion for ?: operatorIan Romanick
2010-03-29Add generate_temporary to generate an anonymous temporaryIan Romanick
2010-03-29Implement HIR conversion for ast_nequal and ast_equalIan Romanick
The following tests now pass: shaders/glsl-unused-varying.frag shaders/glsl-fs-sqrt-branch.frag
2010-03-29Add missing break-statements in ast_expression::hirIan Romanick
The ast_conditional case was flowing right into ast_pre_inc.
2010-03-29Implement ir_if (for if-statments) and conversion from ASTIan Romanick
The following tests now pass: glslparsertest/shaders/if1.frag glslparsertest/shaders/if2.frag The following tests that used to pass now fail. It appears that most of these fail because ast_nequal and ast_equal are not converted to HIR. shaders/glsl-unused-varying.frag shaders/glsl-fs-sqrt-branch.frag
2010-03-29Add a variable to the symbol table after processing the initializerIan Romanick
2010-03-29Reject main() declarations with a non-void return value.Eric Anholt
Fixes main3.vert.
2010-03-29Reject variables marked with attribute in the fragment shader.Eric Anholt
Fixes attribute.frag.
2010-03-29Implement the first builtin function: exp().Eric Anholt
2010-03-28Generate more correctly diagnostics from some invalid initializersIan Romanick