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
2695eb18
Commit
2695eb18
authored
10 years ago
by
Xinliang David Li
Committed by
Xinliang David Li
10 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add new test case
From-SVN: r210599
parent
7b3376a0
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
82 additions
and
0 deletions
+82
-0
gcc/testsuite/ChangeLog
+4
-0
gcc/testsuite/g++.dg/ipa/devirt-33.C
+78
-0
No files found.
gcc/testsuite/ChangeLog
View file @
2695eb18
2014-05-17 Xinliang David Li <davidxl@google.com>
* g++.dg/ipa/devirt-33.C: New testcase.
2014-05-17 Jan Hubicka <hubicka@ucw.cz>
* g++.dg/ipa/comdat.C: New file.
...
...
This diff is collapsed.
Click to expand it.
gcc/testsuite/g++.dg/ipa/devirt-33.C
0 → 100644
View file @
2695eb18
/* Verify we do not devirtualize wrongly to __cxa_pure_virtual */
/* { dg-do run } */
/* { dg-options "-O2 -std=c++11" } */
inline
void
*
operator
new
(
__SIZE_TYPE__
s
,
void
*
buf
)
throw
()
{
return
buf
;
}
class
A
{
private
:
struct
Base
{
virtual
~
Base
()
{}
virtual
Base
*
Clone
(
void
*
buf
)
const
=
0
;
virtual
float
*
Allocate
(
__SIZE_TYPE__
count
)
=
0
;
};
struct
Value
:
Base
{
virtual
~
Value
(){}
Base
*
Clone
(
void
*
buf
)
const
override
{
return
new
(
buf
)
Value
();
}
float
*
Allocate
(
__SIZE_TYPE__
count
)
override
{
return
new
float
[
count
];
}
};
public
:
A
()
{
new
(
buffer_
)
Value
();
}
A
(
const
A
&
other
)
{
other
.
ptr
()
->
Clone
(
buffer_
);
}
float
*
Allocate
()
{
return
ptr
()
->
Allocate
(
100
);
}
const
Base
*
ptr
()
const
{
return
reinterpret_cast
<
const
Base
*>
(
buffer_
);}
Base
*
ptr
()
{
return
reinterpret_cast
<
Base
*>
(
buffer_
);}
private
:
alignas
(
16
)
char
buffer_
[
1024
];
};
struct
B
{
B
(
const
A
&
a
)
:
a_
(
a
)
{
buff_
=
a_
.
Allocate
();
}
float
*
buff_
;
A
a_
;
};
struct
Dummy
{
int
i
;
};
struct
D
:
public
Dummy
{
__attribute__
((
noinline
))
D
(
const
A
&
a
);
B
b_
;
};
D
::
D
(
const
A
&
a
)
:
b_
(
a
)
{}
int
main
()
{
A
a
;
D
d
(
a
);
return
0
;
}
This diff is collapsed.
Click to expand it.
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