compiler: don't use predeclared location for implicit runtime import
authorIan Lance Taylor <ian@gcc.gnu.org>
Mon, 9 Sep 2019 19:41:05 +0000 (19:41 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Mon, 9 Sep 2019 19:41:05 +0000 (19:41 +0000)
    For the main package we add an implicit import of the runtime package,
    to ensure that it is initialized.  That import used the predeclared
    location, which caused various tests, notably Named_type::is_builtin,
    to treat these imported names as builtin.  Start using a real location,
    so that those tests do the right thing.

    By the way, this implicit import is a partial cause of golang/go#19773.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/194337

From-SVN: r275540

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/gogo.cc

index d966638c2ea7dc94e4543d67a7d026ffeb0ba970..79349d792ee6d74ffb94a0548ee3238dada41c22 100644 (file)
@@ -1,4 +1,4 @@
-28c9053b3d507bef7bd56cb01c6b22deea354cdd
+17bef47f464983fd8513f88f3f159d28e2423e79
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index d39a4fb51aac1df14504fb10486e2dc82107b87b..f6a8e7ad8eb16afb9442e6ef9956ab238739df36 100644 (file)
@@ -2589,9 +2589,11 @@ Gogo::define_global_names()
   if (this->is_main_package())
     {
       // Every Go program has to import the runtime package, so that
-      // it is properly initialized.
+      // it is properly initialized.  We can't use
+      // predeclared_location here as it will cause runtime functions
+      // to appear to be builtin functions.
       this->import_package("runtime", "_", false, false,
-                          Linemap::predeclared_location());
+                          this->package_->location());
     }
 
   for (Bindings::const_declarations_iterator p =