]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Use pointers when accessing constant multi-dimensional arrays
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Wed, 12 Jan 2011 17:41:43 +0000 (18:41 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sat, 17 Feb 2018 21:22:32 +0000 (22:22 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=604371

codegen/valaccodearraymodule.vala

index 6cab68a42a0ed1205102b4158d4e19b97f4c8e30..13be80c3aa3428242a62fc80e85aca5428d231e4 100644 (file)
@@ -164,6 +164,9 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                        for (int i = 1; i < rank; i++) {
                                var cmul = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, cindex, get_array_length_cexpression (expr.container, i + 1));
                                cindex = new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, cmul, get_cvalue (indices[i]));
+                               if (expr.container.is_constant ()) {
+                                       ccontainer = new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, ccontainer);
+                               }
                        }
                        set_cvalue (expr, new CCodeElementAccess (ccontainer, cindex));
                }