1. 06 Jul, 2018 6 commits
  2. 05 Jul, 2018 3 commits
  3. 04 Jul, 2018 4 commits
  4. 03 Jul, 2018 11 commits
  5. 02 Jul, 2018 12 commits
  6. 01 Jul, 2018 2 commits
  7. 30 Jun, 2018 1 commit
  8. 29 Jun, 2018 1 commit
    • Ian Lance Taylor's avatar
      cmd/cgo: handle GCC 8 change in errors about constant initializers · da769814
      Ian Lance Taylor authored
      Before GCC 8 C code like
      
      const unsigned long long int neg = (const unsigned long long) -1;
      void f(void) { static const double x = (neg); }
      
      would get an error "initializer element is not constant". In GCC 8 and
      later it does not.
      
      Because a value like neg, above, can not be used as a general integer
      constant, this causes cgo to conclude that it is a floating point
      constant. The way that cgo handles floating point values then causes
      it to get the wrong value for it: 18446744073709551615 rather than -1.
      These are of course the same value when converted to int64, but Go
      does not permit that kind of conversion for an out-of-range constant.
      
      This CL side-steps the problem by treating floating point constants
      with integer type as they would up being treated before GCC 8: as
      variables rather than constants.
      
      Fixes #26066
      
      Change-Id: I6f2f9ac2fa8a4b8218481b474f0b539758eb3b79
      Reviewed-on: https://go-review.googlesource.com/121035
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      da769814