aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Morsing <daniel.morsing@gmail.com>2015-01-10 17:53:13 +0000
committerDaniel Morsing <daniel.morsing@gmail.com>2015-01-11 09:34:53 +0000
commit301ad790a2eef1962a97f9ccef5de8eff84c12fb (patch)
tree78d1489dd8a60150ce601f455ffbe5506b3cb286 /src
parente8e89347cd44c67d97fc0973ec2f15bf137b2d77 (diff)
downloadgo-301ad790a2eef1962a97f9ccef5de8eff84c12fb.tar.xz
cmd/gc: fix racewalk after writebarrierfat was renamed to typedmemmove
Renaming the function broke the race detector since it looked for the name, didn't find it anymore and didn't insert the necessary instrumentation. Change-Id: I11fed6e807cc35be5724d26af12ceff33ebf4f7b Reviewed-on: https://go-review.googlesource.com/2661 Reviewed-by: Minux Ma <minux@golang.org> Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/gc/racewalk.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/cmd/gc/racewalk.c b/src/cmd/gc/racewalk.c
index c9e27fe560..de9e32b2a8 100644
--- a/src/cmd/gc/racewalk.c
+++ b/src/cmd/gc/racewalk.c
@@ -210,11 +210,12 @@ racewalknode(Node **np, NodeList **init, int wr, int skip)
case OCALLFUNC:
// Instrument dst argument of runtime.writebarrier* calls
// as we do not instrument runtime code.
- if(n->left->sym != S && n->left->sym->pkg == runtimepkg && strncmp(n->left->sym->name, "writebarrier", 12) == 0) {
+ if(n->left->sym != S && n->left->sym->pkg == runtimepkg &&
+ (strncmp(n->left->sym->name, "writebarrier", 12) == 0 || strcmp(n->left->sym->name, "typedmemmove") == 0)) {
// Find the dst argument.
// The list can be reordered, so it's not necessary just the first or the second element.
for(l = n->list; l; l = l->next) {
- if(strcmp(n->left->sym->name, "writebarrierfat") == 0) {
+ if(strcmp(n->left->sym->name, "typedmemmove") == 0) {
if(l->n->left->xoffset == widthptr)
break;
} else {