aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
authorKristian H. Kristensen <[email protected]>2020-02-03 12:43:19 -0800
committerMarge Bot <[email protected]>2020-02-04 06:03:52 +0000
commite3dfa8f4d694e7d64a6401752af1f973b0852aab (patch)
tree70f90b4e5ee9c9c4a94999e2425babccb134d11d /src/compiler
parent0bc516fceb742e4c1ce2d47f129d19d8bb005d13 (diff)
glsl: Use 'using' to be explicit about visitor overloads
Clang has a warning about overloading virtuals that triggers when a derived class defines a virtual function that's an overload of function in the base class. This kind of thing: struct chart; // let's pretend this exists struct Base { virtual void* get(char* e); }; struct Derived: public Base { virtual void* get(chart* e); // typo, we wanted to override the same function }; The solution is to use using Base::get; to be explicit about the intention to reuse the base class virtual. We hit this a lot with out glsl ir_hierarchical_visitor visitor pattern, so let's adds some 'using' to calm down the compiler. See-also: https://stackoverflow.com/questions/18515183/c-overloaded-virtual-function-warning-by-clang) Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3686>
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/glsl/linker.cpp4
-rw-r--r--src/compiler/glsl/lower_jumps.cpp2
-rw-r--r--src/compiler/glsl/opt_constant_variable.cpp3
-rw-r--r--src/compiler/glsl/opt_dead_code_local.cpp2
4 files changed, 11 insertions, 0 deletions
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index 880f42ae171..d69dff7bbd9 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -260,6 +260,8 @@ public:
class array_resize_visitor : public deref_type_updater {
public:
+ using deref_type_updater::visit;
+
unsigned num_vertices;
gl_shader_program *prog;
gl_shader_stage stage;
@@ -1506,6 +1508,8 @@ move_non_declarations(exec_list *instructions, exec_node *last,
*/
class array_sizing_visitor : public deref_type_updater {
public:
+ using deref_type_updater::visit;
+
array_sizing_visitor()
: mem_ctx(ralloc_context(NULL)),
unnamed_interfaces(_mesa_pointer_hash_table_create(NULL))
diff --git a/src/compiler/glsl/lower_jumps.cpp b/src/compiler/glsl/lower_jumps.cpp
index 3286a1c5794..389f5847b3e 100644
--- a/src/compiler/glsl/lower_jumps.cpp
+++ b/src/compiler/glsl/lower_jumps.cpp
@@ -268,6 +268,8 @@ struct ir_lower_jumps_visitor : public ir_control_flow_visitor {
* contains the jump.
*/
+ using ir_control_flow_visitor::visit;
+
bool progress;
struct function_record function;
diff --git a/src/compiler/glsl/opt_constant_variable.cpp b/src/compiler/glsl/opt_constant_variable.cpp
index a1fffd4a5f1..cc2760f5609 100644
--- a/src/compiler/glsl/opt_constant_variable.cpp
+++ b/src/compiler/glsl/opt_constant_variable.cpp
@@ -49,6 +49,9 @@ struct assignment_entry {
class ir_constant_variable_visitor : public ir_hierarchical_visitor {
public:
+ using ir_hierarchical_visitor::visit;
+ using ir_hierarchical_visitor::visit_enter;
+
virtual ir_visitor_status visit_enter(ir_dereference_variable *);
virtual ir_visitor_status visit(ir_variable *);
virtual ir_visitor_status visit_enter(ir_assignment *);
diff --git a/src/compiler/glsl/opt_dead_code_local.cpp b/src/compiler/glsl/opt_dead_code_local.cpp
index 3cbc441ac9c..b2d35bbaff8 100644
--- a/src/compiler/glsl/opt_dead_code_local.cpp
+++ b/src/compiler/glsl/opt_dead_code_local.cpp
@@ -66,6 +66,8 @@ public:
class kill_for_derefs_visitor : public ir_hierarchical_visitor {
public:
+ using ir_hierarchical_visitor::visit;
+
kill_for_derefs_visitor(exec_list *assignments)
{
this->assignments = assignments;