From c9cb1032be454ff5fdb802a629565cfaeb2e5d5a Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Fri, 4 Jun 2010 16:20:35 -0700 Subject: [PATCH] Derefence components of constants smarter During generation of calls to constructors, derefernce constants by creating new constants instead of creating dereferences. --- ast_function.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ast_function.cpp b/ast_function.cpp index 06498b0e379..fc53d7ac1cb 100644 --- a/ast_function.cpp +++ b/ast_function.cpp @@ -188,6 +188,13 @@ dereference_component(ir_rvalue *src, unsigned component) { assert(component < src->type->components()); + /* If the source is a constant, just create a new constant instead of a + * dereference of the existing constant. + */ + ir_constant *constant = src->as_constant(); + if (constant) + return new ir_constant(constant, component); + if (src->type->is_scalar()) { return src; } else if (src->type->is_vector()) { -- 2.30.2