Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions .github/workflows/all.bash in milkv-pioneer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,21 @@ jobs:
set -euxo pipefail
BOOT=/tmp/go-bootstrap
rm -rf "$BOOT"
curl -fsSL https://go.dev/dl/go1.25.0.linux-riscv64.tar.gz -o /tmp/go.tar.gz
curl -fsSL https://github.com/zte-riscv/go/releases/download/go1.26.4.202607/go1.26.4.202607.linux-riscv64.tar.gz -o /tmp/go.tar.gz
tar -C /tmp -xzf /tmp/go.tar.gz
mv /tmp/go "$BOOT"
export GOROOT_BOOTSTRAP="$BOOT"
export GORISCV64=rva20u64,misaligned_fast
export GO_TEST_TIMEOUT_SCALE=10

# build toolchain
rm -rf "$HOME/.cache/go-build"
cd "$GITHUB_WORKSPACE/src"
./all.bash
./all.bash 2>&1 | tee build.log
- name: Upload build log on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: build-log
path: src/build.log
retention-days: 2
184 changes: 92 additions & 92 deletions .github/workflows/go vet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,102 +14,102 @@ jobs:

- name: Build toolchain and test (host amd64)
run: |
# install bootstrap Go
set -euxo pipefail
BOOT=/tmp/go-bootstrap
curl -fsSL https://go.dev/dl/go1.25.0.linux-amd64.tar.gz -o /tmp/go.tar.gz
tar -C /tmp -xzf /tmp/go.tar.gz
mv /tmp/go "$BOOT"
export GOROOT_BOOTSTRAP="$BOOT"
# # install bootstrap Go
# set -euxo pipefail
# BOOT=/tmp/go-bootstrap
# curl -fsSL https://go.dev/dl/go1.25.0.linux-amd64.tar.gz -o /tmp/go.tar.gz
# tar -C /tmp -xzf /tmp/go.tar.gz
# mv /tmp/go "$BOOT"
# export GOROOT_BOOTSTRAP="$BOOT"

# build toolchain
cd "$GITHUB_WORKSPACE/src"
./make.bash
# run go vet only on packages with changed Go files under src/ relative to PR base
export GOROOT="$GITHUB_WORKSPACE"
cd "$GITHUB_WORKSPACE"
# Determine base commit for PR; fallback to origin/${GITHUB_BASE_REF:-main}
BASE_SHA="${{ github.event.pull_request.base.sha }}"
if [ -z "${BASE_SHA}" ]; then
git fetch --no-tags origin "+refs/heads/*:refs/remotes/origin/*"
BASE_REF="${GITHUB_BASE_REF:-main}"
BASE_SHA="origin/${BASE_REF}"
fi
# Collect changed .go files under src/
mapfile -t CHANGED < <(git diff --name-only --diff-filter=ACMRT "${BASE_SHA}" HEAD -- '*.go' | grep -E '^src/' || true)
if [ ${#CHANGED[@]} -eq 0 ]; then
echo "No changed Go files under src/; skipping vet."
exit 0
fi
# Derive unique package directories relative to src/
mapfile -t PKG_DIRS < <(printf '%s\n' "${CHANGED[@]}" | sed 's|^src/||' | xargs -r -n1 dirname | sort -u)
cd "$GOROOT/src"
ok_dirs=()
for d in "${PKG_DIRS[@]}"; do
# Filter to valid packages (go list must succeed)
if GO111MODULE=off "$GOROOT/bin/go" list "./$d" >/dev/null 2>&1; then
ok_dirs+=("./$d")
fi
done
if [ ${#ok_dirs[@]} -eq 0 ]; then
echo "No valid Go packages to vet; exiting."
exit 0
fi
echo "Vetting packages:"
printf '%s\n' "${ok_dirs[@]}"
# # build toolchain
# cd "$GITHUB_WORKSPACE/src"
# ./make.bash
# # run go vet only on packages with changed Go files under src/ relative to PR base
# export GOROOT="$GITHUB_WORKSPACE"
# cd "$GITHUB_WORKSPACE"
# # Determine base commit for PR; fallback to origin/${GITHUB_BASE_REF:-main}
# BASE_SHA="${{ github.event.pull_request.base.sha }}"
# if [ -z "${BASE_SHA}" ]; then
# git fetch --no-tags origin "+refs/heads/*:refs/remotes/origin/*"
# BASE_REF="${GITHUB_BASE_REF:-main}"
# BASE_SHA="origin/${BASE_REF}"
# fi
# # Collect changed .go files under src/
# mapfile -t CHANGED < <(git diff --name-only --diff-filter=ACMRT "${BASE_SHA}" HEAD -- '*.go' | grep -E '^src/' || true)
# if [ ${#CHANGED[@]} -eq 0 ]; then
# echo "No changed Go files under src/; skipping vet."
# exit 0
# fi
# # Derive unique package directories relative to src/
# mapfile -t PKG_DIRS < <(printf '%s\n' "${CHANGED[@]}" | sed 's|^src/||' | xargs -r -n1 dirname | sort -u)
# cd "$GOROOT/src"
# ok_dirs=()
# for d in "${PKG_DIRS[@]}"; do
# # Filter to valid packages (go list must succeed)
# if GO111MODULE=off "$GOROOT/bin/go" list "./$d" >/dev/null 2>&1; then
# ok_dirs+=("./$d")
# fi
# done
# if [ ${#ok_dirs[@]} -eq 0 ]; then
# echo "No valid Go packages to vet; exiting."
# exit 0
# fi
# echo "Vetting packages:"
# printf '%s\n' "${ok_dirs[@]}"

# Run go vet and capture output without failing immediately
# Disable xtrace to reduce noise in logs while filtering
set +x
set +e
GO111MODULE=off "$GOROOT/bin/go" vet -v "${ok_dirs[@]}" > /tmp/vet.out 2>&1
VET_STATUS=${PIPESTATUS[0]}
set -e
# Re-enable xtrace if desired (leave disabled to keep logs clean)
# # Run go vet and capture output without failing immediately
# # Disable xtrace to reduce noise in logs while filtering
# set +x
# set +e
# GO111MODULE=off "$GOROOT/bin/go" vet -v "${ok_dirs[@]}" > /tmp/vet.out 2>&1
# VET_STATUS=${PIPESTATUS[0]}
# set -e
# # Re-enable xtrace if desired (leave disabled to keep logs clean)

if [ "$VET_STATUS" -eq 0 ]; then
echo "go vet passed with no errors."
exit 0
fi
# if [ "$VET_STATUS" -eq 0 ]; then
# echo "go vet passed with no errors."
# exit 0
# fi

# Build a set of changed files relative to $GOROOT/src
mapfile -t CHANGED_REL < <(printf '%s\n' "${CHANGED[@]}" | sed 's|^src/||')
declare -A CHANGED_SET=()
for f in "${CHANGED_REL[@]}"; do
CHANGED_SET["$f"]=1
CHANGED_SET["./$f"]=1
done
# # Build a set of changed files relative to $GOROOT/src
# mapfile -t CHANGED_REL < <(printf '%s\n' "${CHANGED[@]}" | sed 's|^src/||')
# declare -A CHANGED_SET=()
# for f in "${CHANGED_REL[@]}"; do
# CHANGED_SET["$f"]=1
# CHANGED_SET["./$f"]=1
# done

# Filter vet output: keep errors only for files modified in this PR
KEPT_ERRORS=0
IGNORED_ERRORS=0
> /tmp/vet.kept
> /tmp/vet.ignored
# # Filter vet output: keep errors only for files modified in this PR
# KEPT_ERRORS=0
# IGNORED_ERRORS=0
# > /tmp/vet.kept
# > /tmp/vet.ignored

while IFS= read -r line; do
if [[ "$line" =~ ^([[:alnum:]_./-]+\.go):([0-9]+): ]]; then
file="${BASH_REMATCH[1]}"
if [[ ${CHANGED_SET[$file]+_} ]]; then
echo "$line" >> /tmp/vet.kept
KEPT_ERRORS=$((KEPT_ERRORS+1))
else
echo "$line" >> /tmp/vet.ignored
IGNORED_ERRORS=$((IGNORED_ERRORS+1))
fi
fi
done < /tmp/vet.out
# while IFS= read -r line; do
# if [[ "$line" =~ ^([[:alnum:]_./-]+\.go):([0-9]+): ]]; then
# file="${BASH_REMATCH[1]}"
# if [[ ${CHANGED_SET[$file]+_} ]]; then
# echo "$line" >> /tmp/vet.kept
# KEPT_ERRORS=$((KEPT_ERRORS+1))
# else
# echo "$line" >> /tmp/vet.ignored
# IGNORED_ERRORS=$((IGNORED_ERRORS+1))
# fi
# fi
# done < /tmp/vet.out

if [ "$KEPT_ERRORS" -gt 0 ]; then
echo "go vet errors in modified files ($KEPT_ERRORS):" >&2
cat /tmp/vet.kept >&2
if [ "$IGNORED_ERRORS" -gt 0 ]; then
echo "go vet diagnostics ignored in unmodified files ($IGNORED_ERRORS):" >&2
cat /tmp/vet.ignored >&2
fi
exit 1
else
echo "go vet reported issues only in unmodified files ($IGNORED_ERRORS); ignoring." >&2
# Optionally show ignored diagnostics; comment out next line to hide details
cat /tmp/vet.ignored >&2 || true
exit 0
fi
# if [ "$KEPT_ERRORS" -gt 0 ]; then
# echo "go vet errors in modified files ($KEPT_ERRORS):" >&2
# cat /tmp/vet.kept >&2
# if [ "$IGNORED_ERRORS" -gt 0 ]; then
# echo "go vet diagnostics ignored in unmodified files ($IGNORED_ERRORS):" >&2
# cat /tmp/vet.ignored >&2
# fi
# exit 1
# else
# echo "go vet reported issues only in unmodified files ($IGNORED_ERRORS); ignoring." >&2
# # Optionally show ignored diagnostics; comment out next line to hide details
# cat /tmp/vet.ignored >&2 || true
# exit 0
# fi
20 changes: 10 additions & 10 deletions .github/workflows/test all in amd64 ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ jobs:

- name: Build toolchain and test (host amd64)
run: |
# install bootstrap Go
set -euxo pipefail
BOOT=/tmp/go-bootstrap
curl -fsSL https://go.dev/dl/go1.25.0.linux-amd64.tar.gz -o /tmp/go.tar.gz
tar -C /tmp -xzf /tmp/go.tar.gz
mv /tmp/go "$BOOT"
export GOROOT_BOOTSTRAP="$BOOT"
# # install bootstrap Go
# set -euxo pipefail
# BOOT=/tmp/go-bootstrap
# curl -fsSL https://go.dev/dl/go1.25.0.linux-amd64.tar.gz -o /tmp/go.tar.gz
# tar -C /tmp -xzf /tmp/go.tar.gz
# mv /tmp/go "$BOOT"
# export GOROOT_BOOTSTRAP="$BOOT"

# build toolchain and test
cd "$GITHUB_WORKSPACE/src"
./all.bash
# # build toolchain and test
# cd "$GITHUB_WORKSPACE/src"
# ./all.bash
22 changes: 11 additions & 11 deletions .github/workflows/test all in arm64 ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ jobs:

- name: Build toolchain and test (host arm64)
run: |
# install bootstrap Go
set -euxo pipefail
BOOT=/tmp/go-bootstrap
curl -fsSL https://go.dev/dl/go1.25.0.linux-arm64.tar.gz -o /tmp/go.tar.gz
tar -C /tmp -xzf /tmp/go.tar.gz
mv /tmp/go "$BOOT"
export GOROOT_BOOTSTRAP="$BOOT"
uname -a
# # install bootstrap Go
# set -euxo pipefail
# BOOT=/tmp/go-bootstrap
# curl -fsSL https://go.dev/dl/go1.25.0.linux-arm64.tar.gz -o /tmp/go.tar.gz
# tar -C /tmp -xzf /tmp/go.tar.gz
# mv /tmp/go "$BOOT"
# export GOROOT_BOOTSTRAP="$BOOT"
# uname -a

# build toolchain and test
cd "$GITHUB_WORKSPACE/src"
./all.bash
# # build toolchain and test
# cd "$GITHUB_WORKSPACE/src"
# ./all.bash
9 changes: 5 additions & 4 deletions src/cmd/compile/internal/ssa/_gen/RISCV64Ops.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const (
riscv64REG_SP = 2
riscv64REG_GP = 3
riscv64REG_TP = 4
riscv64REG_FP = 8
riscv64REG_TMP = 31
riscv64REG_ZERO = 0
)
Expand Down Expand Up @@ -79,7 +80,7 @@ func init() {
// Add general purpose registers to gpMask.
switch r {
// ZERO, GP, TP and TMP are not in any gp mask.
case riscv64REG_ZERO, riscv64REG_GP, riscv64REG_TP, riscv64REG_TMP:
case riscv64REG_ZERO, riscv64REG_GP, riscv64REG_TP, riscv64REG_TMP, riscv64REG_FP:
case riscv64REG_G:
gpgMask |= mask
gpspsbgMask |= mask
Expand Down Expand Up @@ -590,9 +591,9 @@ func init() {
regnames: regNamesRISCV64,
gpregmask: gpMask,
fpregmask: fpMask,
framepointerreg: -1, // not used
// Integer parameters passed in register X10-X17, X8-X9, X18-X23
ParamIntRegNames: "X10 X11 X12 X13 X14 X15 X16 X17 X8 X9 X18 X19 X20 X21 X22 X23",
framepointerreg: 7, // Frame Pointer of RISCV is X8
// Integer parameters passed in register X10-X17, X9, X18-X23
ParamIntRegNames: "X10 X11 X12 X13 X14 X15 X16 X17 X9 X18 X19 X20 X21 X22 X23",
// Float parameters passed in register F10-F17, F8-F9, F18-F23
ParamFloatRegNames: "F10 F11 F12 F13 F14 F15 F16 F17 F8 F9 F18 F19 F20 F21 F22 F23",
})
Expand Down
Loading
Loading