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
3411bc59
Commit
3411bc59
authored
Apr 09, 2011
by
Xinliang David Li
Committed by
Xinliang David Li
Apr 09, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix PR48484
From-SVN: r172229
parent
b365495a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
112 additions
and
3 deletions
+112
-3
gcc/ChangeLog
+6
-0
gcc/testsuite/g++.dg/pr48484.C
+105
-0
gcc/tree-ssa-uninit.c
+1
-3
No files found.
gcc/ChangeLog
View file @
3411bc59
2011-04-09 Xinliang David Li <davidxl@google.com>
PR tree-optimization/PR48484
* tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Set
has_valid_pred lazily
2011-04-09 Duncan Sands <baldrick@free.fr>
2011-04-09 Duncan Sands <baldrick@free.fr>
* tree.c (array_type_nelts): Bail out if TYPE_MAX_VALUE not set.
* tree.c (array_type_nelts): Bail out if TYPE_MAX_VALUE not set.
...
...
gcc/testsuite/g++.dg/pr48484.C
0 → 100644
View file @
3411bc59
/* { dg-do compile } */
/* { dg-options "-O -finline-functions -finline-small-functions -Wuninitialized" } */
struct
SQObjectPtr
{
int
_type
;
SQObjectPtr
operator
=
(
long
);
};
struct
SQObjectPtrVec
{
SQObjectPtr
fff
(
unsigned
);
SQObjectPtr
*
_vals
;
};
struct
SQInstruction
{
int
_arg1
;
unsigned
op
;
unsigned
_arg0
;
unsigned
_arg2
;
};
struct
SQVM
{
struct
CallInfo
{
SQInstruction
*
_ip
;
};
bool
Execute
(
SQObjectPtr
&
,
long
,
long
,
long
,
SQObjectPtr
&
,
unsigned
,
int
);
bool
FOREACH_OP
(
SQObjectPtr
&
,
SQObjectPtr
&
,
SQObjectPtr
&
,
SQObjectPtr
&
,
long
,
int
,
int
&
);
SQObjectPtrVec
_stack
;
CallInfo
*
ci
;
long
_nnativecalls
;
bool
ShouldSuspend
();
};
struct
AutoDec
{
AutoDec
(
long
*
);
~
AutoDec
();
};
bool
SQVM
::
FOREACH_OP
(
SQObjectPtr
&
o1
,
SQObjectPtr
&
o2
,
SQObjectPtr
&
,
SQObjectPtr
&
o4
,
long
,
int
,
int
&
jump
)
{
long
nrefidx
=
0
;
switch
(
o1
.
_type
)
{
case
0x02000000
:
o4
=
nrefidx
;
jump
=
1
;
return
true
;
case
0x00000080
:
{
long
idx
=
10
;
o2
=
idx
;
jump
=
0
;
}
}
}
bool
SQVM
::
Execute
(
SQObjectPtr
&
,
long
,
long
,
long
,
SQObjectPtr
&
,
unsigned
,
int
)
{
AutoDec
ad
(
&
_nnativecalls
);
for
(;;)
{
if
(
ShouldSuspend
())
return
true
;
SQInstruction
_i_
=
*
ci
->
_ip
;
switch
(
_i_
.
op
)
{
case
0
:
{
int
tojump
;
FOREACH_OP
(
_stack
.
_vals
[
_i_
.
_arg0
],
_stack
.
_vals
[
_i_
.
_arg2
],
_stack
.
_vals
[
_i_
.
_arg2
],
_stack
.
_vals
[
_i_
.
_arg2
],
_i_
.
_arg2
,
_i_
.
_arg1
,
tojump
);
ci
+=
tojump
;
/* { dg-warning "uninitialized" "warning" } */
}
case
1
:
_stack
.
fff
(
_i_
.
_arg1
);
}
}
}
gcc/tree-ssa-uninit.c
View file @
3411bc59
...
@@ -349,9 +349,6 @@ convert_control_dep_chain_into_preds (VEC(edge, heap) **dep_chains,
...
@@ -349,9 +349,6 @@ convert_control_dep_chain_into_preds (VEC(edge, heap) **dep_chains,
if
(
num_chains
==
0
||
num_chains
>=
MAX_NUM_CHAINS
)
if
(
num_chains
==
0
||
num_chains
>=
MAX_NUM_CHAINS
)
return
false
;
return
false
;
/* Now convert CD chains into predicates */
has_valid_pred
=
true
;
/* Now convert the control dep chain into a set
/* Now convert the control dep chain into a set
of predicates. */
of predicates. */
*
preds
=
XCNEWVEC
(
VEC
(
use_pred_info_t
,
heap
)
*
,
*
preds
=
XCNEWVEC
(
VEC
(
use_pred_info_t
,
heap
)
*
,
...
@@ -412,6 +409,7 @@ convert_control_dep_chain_into_preds (VEC(edge, heap) **dep_chains,
...
@@ -412,6 +409,7 @@ convert_control_dep_chain_into_preds (VEC(edge, heap) **dep_chains,
one_pred
->
cond
=
cond_stmt
;
one_pred
->
cond
=
cond_stmt
;
one_pred
->
invert
=
!!
(
e
->
flags
&
EDGE_FALSE_VALUE
);
one_pred
->
invert
=
!!
(
e
->
flags
&
EDGE_FALSE_VALUE
);
VEC_safe_push
(
use_pred_info_t
,
heap
,
(
*
preds
)[
i
],
one_pred
);
VEC_safe_push
(
use_pred_info_t
,
heap
,
(
*
preds
)[
i
],
one_pred
);
has_valid_pred
=
true
;
}
}
if
(
!
has_valid_pred
)
if
(
!
has_valid_pred
)
...
...
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