glsl: Hide many classes local to individual .cpp files in anon namespaces.
authorEric Anholt <eric@anholt.net>
Fri, 20 Sep 2013 18:03:44 +0000 (11:03 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 23 Sep 2013 19:45:22 +0000 (12:45 -0700)
This gives the compiler the chance to inline and not export class symbols
even in the absence of LTO.  Saves about 60kb on disk.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@.intel.com>
33 files changed:
src/glsl/builtin_functions.cpp
src/glsl/ir_function_detect_recursion.cpp
src/glsl/ir_import_prototypes.cpp
src/glsl/ir_reader.cpp
src/glsl/ir_set_program_inouts.cpp
src/glsl/ir_validate.cpp
src/glsl/link_functions.cpp
src/glsl/link_uniform_blocks.cpp
src/glsl/link_uniforms.cpp
src/glsl/link_varyings.cpp
src/glsl/linker.cpp
src/glsl/loop_analysis.cpp
src/glsl/loop_controls.cpp
src/glsl/loop_unroll.cpp
src/glsl/lower_clip_distance.cpp
src/glsl/lower_discard.cpp
src/glsl/lower_discard_flow.cpp
src/glsl/lower_if_to_cond_assign.cpp
src/glsl/lower_instructions.cpp
src/glsl/lower_jumps.cpp
src/glsl/lower_mat_op_to_vec.cpp
src/glsl/lower_named_interface_blocks.cpp
src/glsl/lower_output_reads.cpp
src/glsl/lower_packed_varyings.cpp
src/glsl/lower_texture_projection.cpp
src/glsl/lower_variable_index_to_cond_assign.cpp
src/glsl/lower_vec_index_to_cond_assign.cpp
src/glsl/lower_vec_index_to_swizzle.cpp
src/glsl/lower_vector.cpp
src/glsl/lower_vector_insert.cpp
src/glsl/opt_array_splitting.cpp
src/glsl/opt_dead_builtin_varyings.cpp
src/mesa/program/ir_to_mesa.cpp

index 96358a7373d852370d73fee8ebcb678b5ee4312e..72054e0fe93c88f5248a04c55885f5987b405e85 100644 (file)
@@ -304,6 +304,8 @@ tex3d_lod(const _mesa_glsl_parse_state *state)
 
 /******************************************************************************/
 
+namespace {
+
 /**
  * builtin_builder: A singleton object representing the core of the built-in
  * function module.
@@ -521,6 +523,8 @@ private:
    /** @} */
 };
 
+} /* anonymous namespace */
+
 /**
  * Core builtin_builder functionality:
  *  @{
index b02c32518ccf679a282fadaa0c8f0909ba39f8fd..5813315b613e1cb7528e67e7e674ab1e758f11f6 100644 (file)
 #include "program/hash_table.h"
 #include "program.h"
 
+namespace {
+
 struct call_node : public exec_node {
    class function *func;
 };
@@ -222,6 +224,8 @@ public:
    bool progress;
 };
 
+} /* anonymous namespace */
+
 static void
 destroy_links(exec_list *list, function *f)
 {
index 3585bf6b24bfd2e7a7b20e528a0a5ee1bdf112d2..b0429fbc3afc90ba3a40de9339c1dff3be972da0 100644 (file)
@@ -30,6 +30,8 @@
 #include "ir.h"
 #include "glsl_symbol_table.h"
 
+namespace {
+
 /**
  * Visitor used to import function prototypes
  *
@@ -99,6 +101,7 @@ private:
    void *mem_ctx;
 };
 
+} /* anonymous namespace */
 
 /**
  * Import function prototypes from one IR tree into another
index ec35b682eaf87678a232116b57bc24183d4620aa..f0318ea210a68efb4b4f8ee7cecf8e1de60cae5e 100644 (file)
@@ -28,6 +28,8 @@
 
 const static bool debug = false;
 
+namespace {
+
 class ir_reader {
 public:
    ir_reader(_mesa_glsl_parse_state *);
@@ -66,6 +68,8 @@ private:
    ir_dereference_variable *read_var_ref(s_expression *);
 };
 
+} /* anonymous namespace */
+
 ir_reader::ir_reader(_mesa_glsl_parse_state *state) : state(state)
 {
    this->mem_ctx = state;
index 6196d6a6425eadc8d4a9308a54a1fd97d139c580..1267d6d71774cdc8f60b6f74c76ad168d0750283 100644 (file)
@@ -42,6 +42,8 @@
 #include "ir_visitor.h"
 #include "glsl_types.h"
 
+namespace {
+
 class ir_set_program_inouts_visitor : public ir_hierarchical_visitor {
 public:
    ir_set_program_inouts_visitor(struct gl_program *prog, GLenum shader_type)
@@ -67,6 +69,8 @@ private:
    GLenum shader_type;
 };
 
+} /* anonymous namespace */
+
 static inline bool
 is_shader_inout(ir_variable *var)
 {
index 2068de06a3b4c310cb355a6637a99ba82d72e433..2c64f4e582a283107a350031acc8d411de9dead3 100644 (file)
@@ -38,6 +38,8 @@
 #include "program/hash_table.h"
 #include "glsl_types.h"
 
+namespace {
+
 class ir_validate : public ir_hierarchical_visitor {
 public:
    ir_validate()
@@ -81,6 +83,7 @@ public:
    struct hash_table *ht;
 };
 
+} /* anonymous namespace */
 
 ir_visitor_status
 ir_validate::visit(ir_dereference_variable *ir)
index 9e96365e6de9120caef11f9487695420bcf0181b..b1a68fd55b04fe27f9d9a4943c5df8e76d64c66f 100644 (file)
@@ -34,6 +34,8 @@ find_matching_signature(const char *name, const exec_list *actual_parameters,
                        gl_shader **shader_list, unsigned num_shaders,
                        bool use_builtin);
 
+namespace {
+
 class call_link_visitor : public ir_hierarchical_visitor {
 public:
    call_link_visitor(gl_shader_program *prog, gl_shader *linked,
@@ -273,6 +275,7 @@ private:
    hash_table *locals;
 };
 
+} /* anonymous namespace */
 
 /**
  * Searches a list of shaders for a particular function definition
index d9607584970f31c6643f175ca2ea1f62f36430cb..72d6c5323a6ebe90a4117bf4e8ac56eaa88d4df6 100644 (file)
@@ -29,6 +29,8 @@
 #include "main/hash_table.h"
 #include "program.h"
 
+namespace {
+
 class ubo_visitor : public program_resource_visitor {
 public:
    ubo_visitor(void *mem_ctx, gl_uniform_buffer_variable *variables,
@@ -147,6 +149,8 @@ private:
    }
 };
 
+} /* anonymous namespace */
+
 struct block {
    const glsl_type *type;
    bool has_instance_name;
index fa77157f78dde4092d0c254a8bd7413e291c4ea4..03cbcd1ce202e8409ad7774dfd8502b5acf4854e 100644 (file)
@@ -168,6 +168,8 @@ program_resource_visitor::visit_field(const glsl_struct_field *field)
    /* empty */
 }
 
+namespace {
+
 /**
  * Class to help calculate the storage requirements for a set of uniforms
  *
@@ -272,6 +274,8 @@ private:
    struct string_to_uint_map *map;
 };
 
+} /* anonymous namespace */
+
 /**
  * Class to help parcel out pieces of backing storage to uniforms
  *
index 081a51da54fed1408f13225f28ff3038f2c59ece..905621daf8ee542e72bd16600b3d1b4fdafc9b52 100644 (file)
@@ -597,6 +597,7 @@ store_tfeedback_info(struct gl_context *ctx, struct gl_shader_program *prog,
    return true;
 }
 
+namespace {
 
 /**
  * Data structure recording the relationship between outputs of one shader
@@ -689,6 +690,7 @@ private:
    const bool consumer_is_fs;
 };
 
+} /* anonymous namespace */
 
 varying_matches::varying_matches(bool disable_varying_packing,
                                  bool consumer_is_fs)
index 8a143fddfca8299576fd411fd6ce0d4f7cc43816..c54b7049bbeda256e3ddd189c4978f7ae4c05eda 100644 (file)
@@ -82,6 +82,8 @@ extern "C" {
 
 void linker_error(gl_shader_program *, const char *, ...);
 
+namespace {
+
 /**
  * Visitor that determines whether or not a variable is ever written.
  */
@@ -275,6 +277,7 @@ private:
    bool found;
 };
 
+} /* anonymous namespace */
 
 void
 linker_error(gl_shader_program *prog, const char *fmt, ...)
index 40897bb6fa8d44c531f0d2894c7eff89169658e2..b08241af52706be9bffd9d2181147416ef74c7eb 100644 (file)
@@ -102,6 +102,7 @@ loop_variable_state::insert(ir_if *if_stmt)
    return t;
 }
 
+namespace {
 
 class loop_analysis : public ir_hierarchical_visitor {
 public:
@@ -128,6 +129,7 @@ public:
    exec_list state;
 };
 
+} /* anonymous namespace */
 
 loop_analysis::loop_analysis(loop_state *loops)
    : loops(loops), if_statement_depth(0), current_assignment(NULL)
index 79c820436fd6951a0643d9fa1189b83b59136b90..26481930db7eb5d44ce84805d5a8caeae56e2344 100644 (file)
@@ -151,6 +151,7 @@ calculate_iterations(ir_rvalue *from, ir_rvalue *to, ir_rvalue *increment,
    return (valid_loop) ? iter_value : -1;
 }
 
+namespace {
 
 class loop_control_visitor : public ir_hierarchical_visitor {
 public:
@@ -167,6 +168,7 @@ public:
    bool progress;
 };
 
+} /* anonymous namespace */
 
 ir_visitor_status
 loop_control_visitor::visit_leave(ir_loop *ir)
index 3434fde62926026b8a0d9bbf8aab07bebcd75c7f..ff97766f17b64a72309888e10f1ee0efefaf1a55 100644 (file)
@@ -25,6 +25,8 @@
 #include "loop_analysis.h"
 #include "ir_hierarchical_visitor.h"
 
+namespace {
+
 class loop_unroll_visitor : public ir_hierarchical_visitor {
 public:
    loop_unroll_visitor(loop_state *state, unsigned max_iterations)
@@ -42,6 +44,7 @@ public:
    unsigned max_iterations;
 };
 
+} /* anonymous namespace */
 
 static bool
 is_break(ir_instruction *ir)
index d6cf944388b3b1a4f51d0b8a18ad0bb8b27ca8f4..9ddd64603e60fab9ec5f6773fea781e6fe81a53b 100644 (file)
@@ -50,6 +50,8 @@
 #include "ir.h"
 #include "program/prog_instruction.h" /* For WRITEMASK_* */
 
+namespace {
+
 class lower_clip_distance_visitor : public ir_rvalue_visitor {
 public:
    lower_clip_distance_visitor()
@@ -81,6 +83,7 @@ public:
    ir_variable *new_clip_distance_var;
 };
 
+} /* anonymous namespace */
 
 /**
  * Replace any declaration of gl_ClipDistance as an array of floats with a
index cafd2dd3b44defdeb46a5c75b97f6db0473b147a..f2757d12048829541de00406eb14677179ba48e5 100644 (file)
 #include "glsl_types.h"
 #include "ir.h"
 
+namespace {
+
 class lower_discard_visitor : public ir_hierarchical_visitor {
 public:
    lower_discard_visitor()
@@ -120,6 +122,7 @@ public:
    bool progress;
 };
 
+} /* anonymous namespace */
 
 bool
 lower_discard(exec_list *instructions)
index d385c14354754a7dff4d59f70f84f19e669ec1d3..1bc56d79e988810dc8647f5ad6007860c11fa4e2 100644 (file)
@@ -48,6 +48,8 @@
 #include "ir.h"
 #include "program/hash_table.h"
 
+namespace {
+
 class lower_discard_flow_visitor : public ir_hierarchical_visitor {
 public:
    lower_discard_flow_visitor(ir_variable *discarded)
@@ -71,6 +73,8 @@ public:
    void *mem_ctx;
 };
 
+} /* anonymous namespace */
+
 ir_visitor_status
 lower_discard_flow_visitor::visit_enter(ir_loop_jump *ir)
 {
index 2c5d5612d0d805783ef8ad895c9ba0b80cebfb6b..1e7ce51c70742345c14e698968138b83e1d20879 100644 (file)
@@ -49,6 +49,8 @@
 #include "ir.h"
 #include "program/hash_table.h"
 
+namespace {
+
 class ir_if_to_cond_assign_visitor : public ir_hierarchical_visitor {
 public:
    ir_if_to_cond_assign_visitor(unsigned max_depth)
@@ -76,6 +78,8 @@ public:
    struct hash_table *condition_variables;
 };
 
+} /* anonymous namespace */
+
 bool
 lower_if_to_cond_assign(exec_list *instructions, unsigned max_depth)
 {
index cb530489593b81385607e5dc6d55f4a9f434c05b..d01879cbd4fbba80354ee953918d5ad7e24d9199 100644 (file)
 
 using namespace ir_builder;
 
+namespace {
+
 class lower_instructions_visitor : public ir_hierarchical_visitor {
 public:
    lower_instructions_visitor(unsigned lower)
@@ -133,6 +135,8 @@ private:
    void ldexp_to_arith(ir_expression *);
 };
 
+} /* anonymous namespace */
+
 /**
  * Determine if a particular type of lowering should occur
  */
index bfc8c013bdabed365a27da8556c3d122c52b4a7b..97b1abb9b0250da574621bde1515511a8b591e66 100644 (file)
@@ -133,6 +133,8 @@ enum jump_strength
    strength_return
 };
 
+namespace {
+
 struct block_record
 {
    /* minimum jump strength (of lowered IR, not pre-lowering IR)
@@ -992,6 +994,8 @@ lower_continue:
    }
 };
 
+} /* anonymous namespace */
+
 bool
 do_lower_jumps(exec_list *instructions, bool pull_out_jumps, bool lower_sub_return, bool lower_main_return, bool lower_continue, bool lower_break)
 {
index 08cae29fa5d85bca560ca8f33a7d6821502a10af..105ee0d3f51ad75916a16e2c6846107de83e3afe 100644 (file)
@@ -35,6 +35,8 @@
 #include "ir_expression_flattening.h"
 #include "glsl_types.h"
 
+namespace {
+
 class ir_mat_op_to_vec_visitor : public ir_hierarchical_visitor {
 public:
    ir_mat_op_to_vec_visitor()
@@ -63,6 +65,8 @@ public:
    bool made_progress;
 };
 
+} /* anonymous namespace */
+
 static bool
 mat_op_to_vec_predicate(ir_instruction *ir)
 {
index 20196a35648e0a6bcbc04987b645e031a2549cb3..7019185a2f37d7bdfe7fb9faa56f806c12d0f5f7 100644 (file)
@@ -65,6 +65,8 @@
 #include "ir_rvalue_visitor.h"
 #include "program/hash_table.h"
 
+namespace {
+
 class flatten_named_interface_blocks_declarations : public ir_rvalue_visitor
 {
 public:
@@ -83,6 +85,8 @@ public:
    virtual void handle_rvalue(ir_rvalue **rvalue);
 };
 
+} /* anonymous namespace */
+
 void
 flatten_named_interface_blocks_declarations::run(exec_list *instructions)
 {
index 5ba9720d0dc36239a15b24bf5ed20461a6cacdc5..128b0b8cdb21b0d0df74669ed15546182caf4757 100644 (file)
@@ -37,6 +37,8 @@
  * main() function to copy the final values to the actual shader outputs.
  */
 
+namespace {
+
 class output_read_remover : public ir_hierarchical_visitor {
 protected:
    /**
@@ -55,6 +57,8 @@ public:
    virtual ir_visitor_status visit_leave(class ir_function_signature *);
 };
 
+} /* anonymous namespace */
+
 /**
  * Hash function for the output variables - computes the hash of the name.
  * NOTE: We're using the name string to ensure that the hash doesn't depend
index 4f617225c0f2169680cda90b60b5dfafb88f08bf..2bcadfd55bc759311feda507365b6a54b3c03897 100644 (file)
 #include "ir.h"
 #include "ir_optimization.h"
 
+namespace {
+
 /**
  * Visitor that performs varying packing.  For each varying declared in the
  * shader, this visitor determines whether it needs to be packed.  If so, it
@@ -230,6 +232,8 @@ private:
    exec_list *out_instructions;
 };
 
+} /* anonymous namespace */
+
 lower_packed_varyings_visitor::lower_packed_varyings_visitor(
       void *mem_ctx, unsigned location_base, unsigned locations_used,
       ir_variable_mode mode, unsigned gs_input_vertices,
index 6e3aaecceee49096513dae9183775ea7da83a18a..16d63768055bd96703949678b92a5bfee7f757f1 100644 (file)
@@ -37,6 +37,8 @@
 
 #include "ir.h"
 
+namespace {
+
 class lower_texture_projection_visitor : public ir_hierarchical_visitor {
 public:
    lower_texture_projection_visitor()
@@ -49,6 +51,8 @@ public:
    bool progress;
 };
 
+} /* anonymous namespace */
+
 ir_visitor_status
 lower_texture_projection_visitor::visit_leave(ir_texture *ir)
 {
index 0f507279382d583cbd442056025516f978f16c33..21674b5f8fb2f76e2d2d7598c5327293cee390c3 100644 (file)
@@ -122,6 +122,7 @@ is_array_or_matrix(const ir_rvalue *ir)
    return (ir->type->is_array() || ir->type->is_matrix());
 }
 
+namespace {
 /**
  * Replace a dereference of a variable with a specified r-value
  *
@@ -512,6 +513,8 @@ public:
    }
 };
 
+} /* anonymous namespace */
+
 bool
 lower_variable_index_to_cond_assign(exec_list *instructions,
                                    bool lower_input,
index 88085968801f50f4880bfdab8e487fb0940b69b9..8080006c1d0071496e6986c8e908374132dd36bd 100644 (file)
@@ -41,6 +41,8 @@
 #include "ir_optimization.h"
 #include "glsl_types.h"
 
+namespace {
+
 /**
  * Visitor class for replacing expressions with ir_constant values.
  */
@@ -69,6 +71,8 @@ public:
    bool progress;
 };
 
+} /* anonymous namespace */
+
 ir_rvalue *
 ir_vec_index_to_cond_assign_visitor::convert_vec_index_to_cond_assign(void *mem_ctx,
                                                                       ir_rvalue *orig_vector,
index d5ad692c2f260903b9f23d3b558fa0f3002535e1..46985791ef63f8c37c9f9f6ebf41e09a8ff9a702 100644 (file)
@@ -39,6 +39,8 @@
  * Visitor class for replacing expressions with ir_constant values.
  */
 
+namespace {
+
 class ir_vec_index_to_swizzle_visitor : public ir_hierarchical_visitor {
 public:
    ir_vec_index_to_swizzle_visitor()
@@ -58,6 +60,8 @@ public:
    bool progress;
 };
 
+} /* anonymous namespace */
+
 ir_rvalue *
 ir_vec_index_to_swizzle_visitor::convert_vector_extract_to_swizzle(ir_rvalue *ir)
 {
index 0cd6909db55d5dc8a06716bb68a8c0667ee33f53..9172b6af7b504b9401ef1848616a6739f50c23a6 100644 (file)
@@ -31,6 +31,8 @@
 #include "ir.h"
 #include "ir_rvalue_visitor.h"
 
+namespace {
+
 class lower_vector_visitor : public ir_rvalue_visitor {
 public:
    lower_vector_visitor() : progress(false)
@@ -48,6 +50,8 @@ public:
    bool progress;
 };
 
+} /* anonymous namespace */
+
 /**
  * Determine if an IR expression tree looks like an extended swizzle
  *
index 0e640cc3240ab98aba866c70c1de6ac7bfa55dfc..6d7cfa94262082751ad9d4d4ba16dcbafc7a502d 100644 (file)
@@ -27,6 +27,8 @@
 
 using namespace ir_builder;
 
+namespace {
+
 class vector_insert_visitor : public ir_rvalue_visitor {
 public:
    vector_insert_visitor(bool lower_nonconstant_index)
@@ -48,6 +50,7 @@ public:
    bool lower_nonconstant_index;
 };
 
+} /* anonymous namespace */
 
 void
 vector_insert_visitor::handle_rvalue(ir_rvalue **rv)
index f4a7ef99bcd903c5f54438b9cc36b15c24168de5..34ac836ae5cfc78b1d44e855a4d9df7e61659c95 100644 (file)
@@ -40,6 +40,8 @@
 
 static bool debug = false;
 
+namespace {
+
 namespace opt_array_splitting {
 
 class variable_entry : public exec_node
@@ -77,6 +79,7 @@ public:
 };
 
 } /* namespace */
+
 using namespace opt_array_splitting;
 
 /**
@@ -112,6 +115,8 @@ public:
    void *mem_ctx;
 };
 
+} /* namespace */
+
 variable_entry *
 ir_array_reference_visitor::get_variable_entry(ir_variable *var)
 {
index 3cdd13038aeb09976a4d59bd7a7961c8fc8cc824..7e8cd43728df6624795f0e5549f7ca1353310a0c 100644 (file)
@@ -52,6 +52,7 @@
 #include "glsl_types.h"
 #include "link_varyings.h"
 
+namespace {
 
 /**
  * This obtains detailed information about built-in varyings from shader code.
@@ -397,6 +398,7 @@ private:
    ir_variable *new_fog;
 };
 
+} /* anonymous namespace */
 
 static void
 lower_texcoord_array(exec_list *ir, const varying_info_visitor *info)
index c46a3d005411fe8f4338866465a428dedc3b0c84..d5a6a872ab5ec31be0a1c8f6886152932d2ec11f 100644 (file)
@@ -57,11 +57,13 @@ extern "C" {
 #include "program/sampler.h"
 }
 
+static int swizzle_for_size(int size);
+
+namespace {
+
 class src_reg;
 class dst_reg;
 
-static int swizzle_for_size(int size);
-
 /**
  * This struct is a corresponding struct to Mesa prog_src_register, with
  * wider fields.
@@ -129,6 +131,8 @@ public:
    src_reg *reladdr;
 };
 
+} /* anonymous namespace */
+
 src_reg::src_reg(dst_reg reg)
 {
    this->file = reg.file;
@@ -147,6 +151,8 @@ dst_reg::dst_reg(src_reg reg)
    this->reladdr = reg.reladdr;
 }
 
+namespace {
+
 class ir_to_mesa_instruction : public exec_node {
 public:
    DECLARE_RZALLOC_CXX_OPERATORS(ir_to_mesa_instruction)
@@ -316,6 +322,8 @@ public:
    void *mem_ctx;
 };
 
+} /* anonymous namespace */
+
 static src_reg undef_src = src_reg(PROGRAM_UNDEFINED, 0, NULL);
 
 static dst_reg undef_dst = dst_reg(PROGRAM_UNDEFINED, SWIZZLE_NOOP);
@@ -2407,6 +2415,8 @@ print_program(struct prog_instruction *mesa_instructions,
    }
 }
 
+namespace {
+
 class add_uniform_to_shader : public program_resource_visitor {
 public:
    add_uniform_to_shader(struct gl_shader_program *shader_program,
@@ -2436,6 +2446,8 @@ private:
    gl_shader_type shader_type;
 };
 
+} /* anonymous namespace */
+
 void
 add_uniform_to_shader::visit_field(const glsl_type *type, const char *name,
                                    bool row_major)