Skip to content

Commit 7c54e02

Browse files
committed
cmd/compile/internal/ssagen: add check for duplicate intrinsics
Add a check to ensure that intrinsics are not being overwritten. Remove two S390X intrinsics that are being replaced by aliases and are therefore ineffective. Change-Id: I4187a169c14ca75c45a67f41a1d626d76b82bb72 Reviewed-on: https://go-review.googlesource.com/c/go/+/605479 LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: David Chase <[email protected]> Reviewed-by: Keith Randall <[email protected]> Reviewed-by: Keith Randall <[email protected]>
1 parent f490a8d commit 7c54e02

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/cmd/compile/internal/ssagen/intrinsics.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ type intrinsicBuilders map[intrinsicKey]intrinsicBuilder
4545

4646
// add adds the intrinsic builder b for pkg.fn for the given architecture.
4747
func (ib intrinsicBuilders) add(arch *sys.Arch, pkg, fn string, b intrinsicBuilder) {
48+
if _, found := ib[intrinsicKey{arch, pkg, fn}]; found {
49+
panic(fmt.Sprintf("intrinsic already exists for %v.%v on %v", pkg, fn, arch.Name))
50+
}
4851
ib[intrinsicKey{arch, pkg, fn}] = b
4952
}
5053

@@ -239,7 +242,7 @@ func initIntrinsics(cfg *intrinsicBuildConfig) {
239242
s.vars[memVar] = s.newValue1(ssa.OpSelect1, types.TypeMem, v)
240243
return s.newValue1(ssa.OpSelect0, types.Types[types.TUINT32], v)
241244
},
242-
sys.PPC64, sys.S390X)
245+
sys.PPC64)
243246
addF("internal/runtime/atomic", "LoadAcq64",
244247
func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
245248
v := s.newValue2(ssa.OpAtomicLoadAcq64, types.NewTuple(types.Types[types.TUINT64], types.TypeMem), args[0], s.mem())
@@ -284,7 +287,7 @@ func initIntrinsics(cfg *intrinsicBuildConfig) {
284287
s.vars[memVar] = s.newValue3(ssa.OpAtomicStoreRel32, types.TypeMem, args[0], args[1], s.mem())
285288
return nil
286289
},
287-
sys.PPC64, sys.S390X)
290+
sys.PPC64)
288291
addF("internal/runtime/atomic", "StoreRel64",
289292
func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
290293
s.vars[memVar] = s.newValue3(ssa.OpAtomicStoreRel64, types.TypeMem, args[0], args[1], s.mem())

0 commit comments

Comments
 (0)