compiler: Don't crash on invalid print call.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Aug 2015 17:43:55 +0000 (17:43 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Aug 2015 17:43:55 +0000 (17:43 +0000)
    When the print builtins are called with no arguments, the compiler
    issues a warning and crashes when trying to produce the backend
    representation for the arguments.

    Fixes golang/go#11526.

    Reviewed-on: https://go-review.googlesource.com/13131

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227039 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc

index b2f305b..853cb4a 100644 (file)
@@ -1,4 +1,4 @@
-ec34cfb0b148ff461df12c8f5270a06e2f438b7c
+cc7303c97b232ea979cab950d95aaf76c4e0f5b5
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index 9f757a2..c0e5fc5 100644 (file)
@@ -8177,6 +8177,12 @@ Builtin_call_expression::do_get_backend(Translate_context* context)
                                                       location);
          }
 
+        // There aren't any arguments to the print builtin.  The compiler
+        // issues a warning for this so we should avoid getting the backend
+        // representation for this call.  Instead, perform a no-op.
+        if (print_stmts == NULL)
+          return context->backend()->boolean_constant_expression(false);
+
         return print_stmts->get_backend(context);
       }