// $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)
}
