Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
c92900d1
Commit
c92900d1
authored
Aug 23, 2012
by
Ian Lance Taylor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
compiler: Remove old handling of unsafe.Pointer in type assertions.
Fixes issue 17. From-SVN: r190608
parent
8489a21a
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
3 additions
and
34 deletions
+3
-34
gcc/go/gofrontend/expressions.cc
+2
-33
libgo/go/os/dir.go
+1
-1
No files found.
gcc/go/gofrontend/expressions.cc
View file @
c92900d1
...
...
@@ -12914,26 +12914,8 @@ Type_guard_expression::do_traverse(Traverse* traverse)
void
Type_guard_expression
::
do_check_types
(
Gogo
*
)
{
// 6g permits using a type guard with unsafe.pointer; we are
// compatible.
Type
*
expr_type
=
this
->
expr_
->
type
();
if
(
expr_type
->
is_unsafe_pointer_type
())
{
if
(
this
->
type_
->
points_to
()
==
NULL
&&
(
this
->
type_
->
integer_type
()
==
NULL
||
(
this
->
type_
->
forwarded
()
!=
Type
::
lookup_integer_type
(
"uintptr"
))))
this
->
report_error
(
_
(
"invalid unsafe.Pointer conversion"
));
}
else
if
(
this
->
type_
->
is_unsafe_pointer_type
())
{
if
(
expr_type
->
points_to
()
==
NULL
&&
(
expr_type
->
integer_type
()
==
NULL
||
(
expr_type
->
forwarded
()
!=
Type
::
lookup_integer_type
(
"uintptr"
))))
this
->
report_error
(
_
(
"invalid unsafe.Pointer conversion"
));
}
else
if
(
expr_type
->
interface_type
()
==
NULL
)
if
(
expr_type
->
interface_type
()
==
NULL
)
{
if
(
!
expr_type
->
is_error
()
&&
!
this
->
type_
->
is_error
())
this
->
report_error
(
_
(
"type assertion only valid for interface types"
));
...
...
@@ -12966,23 +12948,10 @@ Type_guard_expression::do_check_types(Gogo*)
tree
Type_guard_expression
::
do_get_tree
(
Translate_context
*
context
)
{
Gogo
*
gogo
=
context
->
gogo
();
tree
expr_tree
=
this
->
expr_
->
get_tree
(
context
);
if
(
expr_tree
==
error_mark_node
)
return
error_mark_node
;
Type
*
expr_type
=
this
->
expr_
->
type
();
if
((
this
->
type_
->
is_unsafe_pointer_type
()
&&
(
expr_type
->
points_to
()
!=
NULL
||
expr_type
->
integer_type
()
!=
NULL
))
||
(
expr_type
->
is_unsafe_pointer_type
()
&&
this
->
type_
->
points_to
()
!=
NULL
))
return
convert_to_pointer
(
type_to_tree
(
this
->
type_
->
get_backend
(
gogo
)),
expr_tree
);
else
if
(
expr_type
->
is_unsafe_pointer_type
()
&&
this
->
type_
->
integer_type
()
!=
NULL
)
return
convert_to_integer
(
type_to_tree
(
this
->
type_
->
get_backend
(
gogo
)),
expr_tree
);
else
if
(
this
->
type_
->
interface_type
()
!=
NULL
)
if
(
this
->
type_
->
interface_type
()
!=
NULL
)
return
Expression
::
convert_interface_to_interface
(
context
,
this
->
type_
,
this
->
expr_
->
type
(),
expr_tree
,
true
,
...
...
libgo/go/os/dir.go
View file @
c92900d1
...
...
@@ -49,7 +49,7 @@ func (file *File) readdirnames(n int) (names []string, err error) {
file
.
dirinfo
.
dir
=
r
}
entry_dirent
:=
unsafe
.
Pointer
(
&
file
.
dirinfo
.
buf
[
0
])
.
(
*
syscall
.
Dirent
)
entry_dirent
:=
(
*
syscall
.
Dirent
)(
unsafe
.
Pointer
(
&
file
.
dirinfo
.
buf
[
0
])
)
size
:=
n
if
size
<
0
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment