summaryrefslogtreecommitdiff
path: root/src/glsl/opt_dead_functions.cpp
AgeCommit message (Collapse)AuthorFilesLines
2014-07-01glsl: Use typed foreach_in_list_safe instead of foreach_list_safe.Matt Turner1-5/+2
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2014-07-01glsl: Use typed foreach_in_list instead of foreach_list.Matt Turner1-2/+1
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2014-01-13glsl: Convert piles of foreach_iter to foreach_list_safe.Kenneth Graunke1-4/+4
In these cases, we edit the list (or at least might be), so we use the foreach_list_safe variant. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2014-01-13glsl: Convert piles of foreach_iter to the newer foreach_list macro.Kenneth Graunke1-2/+2
foreach_iter and exec_list_iterators have been deprecated for some time now; we just hadn't ever bothered to convert code to the newer foreach_list and foreach_list_safe macros. In these cases, we aren't editing the list, so we can use foreach_list rather than foreach_list_safe. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2012-06-11glsl: Put a bunch of optimization visitors under anonymous namespaces.Eric Anholt1-0/+3
Because these classes are used entirely from their own source files and not from separate DSOs, the linker gets to produce massively less code. This cuts about 13k of text in the libdricore case. In the non-libdricore case, the additional linkage information allows the compiler to inline some code, so libglsl.a size actually increases by about 300 bytes. For a dricore build, improves shader_runner runtime on glsl-fs-copy-propagation-texcoords-1 by 0.21% +/- 0.03% (n=353574, outliers removed). No statistically significant difference with n=322 on glslparsertest on a yofrankie shader intended to test compiler performance. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2012-04-28glsl: Remove unused member predicate from ir_dead_functions_visitor.Vinson Lee1-2/+0
Fix uninitialized pointer field defect reported by Coverity. Signed-off-by: Vinson Lee <vlee@freedesktop.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2012-04-02glsl: Remove ir_call::get_callee() and set_callee().Kenneth Graunke1-1/+1
Previously, set_callee() performed some assertions about the type of the ir_call; protecting the bare pointer ensured these checks would be run. However, ir_call no longer has a type, so the getter and setter methods don't actually do anything useful. Remove them in favor of accessing callee directly, as is done with most other fields in our IR. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2011-08-08Revert "glsl: Skip processing the first function's body in do_dead_functions()."Paul Berry1-10/+1
opt_dead_functions contained a shortcut to skip processing the first function's body, based on the assumption that IR functions are topologically sorted, with callees always coming before their callers (therefore the first function cannot contain any calls). This assumption turns out not to be true in general. For example, the following code snippet gets translated to IR that violates this assumption: void f(); void g(); void f() { g(); } void g() { ... } In practice, the shortcut didn't cause bugs because of a coincidence of the circumstances in which opt_dead_functions is called: (a) we do inlining right before dead function elimination, and inlining (when successful) eliminates all calls. (b) for user-defined functions, inlining is always successful, because previous optimization passes (during compilation) have reduced them to a form that is eligible for inlining. (c) the function that appears first in the IR can't possibly call a built-in function, because built-in functions are always emitted before the function that calls them. It seems unnecessarily fragile to have opt_dead_functions depend on these coincidences. And the next patch in this series will break (c). So I'm reverting the shortcut. The consequence will be a slight increase in link time for complex shaders. This reverts commit c75427f4c8767e131e5fb3de44fbc9d904cb992d. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2011-03-15glsl: Skip processing the first function's body in do_dead_functions().Eric Anholt1-1/+10
It can't call anything, so there's no point.
2011-03-15glsl: Whitespace fixup in opt_dead_functions.cpp.Eric Anholt1-106/+108
2011-02-21Use C-style system headers in C++ code to avoid issues with std:: namespaceIan Romanick1-2/+0
2011-02-03glsl: Add using statements for standard library functions.Vinson Lee1-0/+2
Standard library functions in C++ are in the std namespace. When using C++-style header files for the standard library, some compilers, such as Sun Studio, provide symbols only for the std namespace and not for the global namespace. This patch adds using statements for standard library functions. Another option could have been to prepend standard library function calls with 'std::'. This patch fixes several compilation errors with Sun Studio.
2011-01-31Convert everything from the talloc API to the ralloc API.Kenneth Graunke1-2/+2
2010-11-17glsl: Fix Doxygen tag \file in recently renamed filesChad Versace1-1/+1
2010-11-15glsl: Rename various ir_* files to lower_* and opt_*.Kenneth Graunke1-0/+153
This helps distinguish between lowering passes, optimization passes, and other compiler code.