src/cmd/gc/subr.c | 4 +++- diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c index 0a377822ea1152775af0214327690ac0b83c3ba7..64a0070776396b93578a5db0fe4c4e1392c36470 100644 --- a/src/cmd/gc/subr.c +++ b/src/cmd/gc/subr.c @@ -1149,7 +1149,9 @@ if(why != nil) *why = ""; - if(safemode && (importpkg == nil || importpkg == localpkg) && src != T && src->etype == TUNSAFEPTR) { + // TODO(rsc,lvd): This behaves poorly in the presence of inlining. + // https://code.google.com/p/go/issues/detail?id=2795 + if(safemode && importpkg == nil && src != T && src->etype == TUNSAFEPTR) { yyerror("cannot use unsafe.Pointer"); errorexit(); }