// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug260 failed

// Test that structures pack densely, according to the alignment of the largest field.

package main

import (
	"fmt"
	"os"
	"strconv"
)

type T1 struct {
	x uint8
}
type T2 struct {
	x uint16
}
type T4 struct {
	x uint32
}

func main() {
	report := len(os.Args) > 1
	status := 0
	var b1 [10]T1
	a0, _ := strconv.Btoui64(fmt.Sprintf("%p", &b1[0])[2:], 16)
	a1, _ := strconv.Btoui64(fmt.Sprintf("%p", &b1[1])[2:], 16)
	if a1 != a0+1 {
		fmt.Println("FAIL")
		if report {
			fmt.Println("alignment should be 1, is", a1-a0)
		}
		status = 1
	}
	var b2 [10]T2
	a0, _ = strconv.Btoui64(fmt.Sprintf("%p", &b2[0])[2:], 16)
	a1, _ = strconv.Btoui64(fmt.Sprintf("%p", &b2[1])[2:], 16)
	if a1 != a0+2 {
		if status == 0 {
			fmt.Println("FAIL")
			status = 1
		}
		if report {
			fmt.Println("alignment should be 2, is", a1-a0)
		}
	}
	var b4 [10]T4
	a0, _ = strconv.Btoui64(fmt.Sprintf("%p", &b4[0])[2:], 16)
	a1, _ = strconv.Btoui64(fmt.Sprintf("%p", &b4[1])[2:], 16)
	if a1 != a0+4 {
		if status == 0 {
			fmt.Println("FAIL")
			status = 1
		}
		if report {
			fmt.Println("alignment should be 4, is", a1-a0)
		}
	}
	os.Exit(status)
}
