diff options
author | Pedro Alves <palves@redhat.com> | 2016-07-19 17:51:05 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2016-07-19 17:51:05 +0100 |
commit | 1f960ced9a3e4aa0823dcc234d9de49aebaee055 (patch) | |
tree | 45af369fc6b8311d228cee5a0eac38e6d4ccdf71 /gdb/testsuite/gdb.opt/inline-markers.c | |
parent | a6ebf6169a1bd14724b9ac49990089542396f576 (diff) | |
download | binutils-1f960ced9a3e4aa0823dcc234d9de49aebaee055.zip binutils-1f960ced9a3e4aa0823dcc234d9de49aebaee055.tar.gz binutils-1f960ced9a3e4aa0823dcc234d9de49aebaee055.tar.bz2 |
Build gdb.opt/inline-*.exp tests at -O0, rely on __attribute__((always_inline))
A test recently added to gdb.opt/inline-cmds.exp fails for
arm-none-eabi targets because -O2 leads to instructions to be
reordered widely.
I guess it might have made sense years ago to enable optimization in
these tests, but I fail to see the need for that nowadays.
Using -O0 while relying on __attribute__((always_inline)), which is
already used in the tests [1] [2], avoids this sort of trouble, while
still exercising the inlining-related use cases that are the focus of
these tests.
I think that nowadays we can safely assume that all compilers we care
about support __attribute__((always_inline)) or similar.
[1] - Except one spot that missed it.
[2] - Note that the .exp files make sure the frames that should have
been inlined are indeed inlined, with "info frame".
gdb/testsuite/ChangeLog:
2016-07-19 Pedro Alves <palves@redhat.com>
* gdb.opt/inline-break.exp: Remove optimize=-O2.
* gdb.opt/inline-bt.exp: Likewise.
* gdb.opt/inline-cmds.exp: Remove optimize=-O2 and add
additional_flags=-Winline.
* gdb.opt/inline-locals.exp: Likewise.
* gdb.opt/inline-markers.c (ATTR): Define.
(inlined_fn): Use it.
Diffstat (limited to 'gdb/testsuite/gdb.opt/inline-markers.c')
-rw-r--r-- | gdb/testsuite/gdb.opt/inline-markers.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.opt/inline-markers.c b/gdb/testsuite/gdb.opt/inline-markers.c index cf92e79..41f8a38 100644 --- a/gdb/testsuite/gdb.opt/inline-markers.c +++ b/gdb/testsuite/gdb.opt/inline-markers.c @@ -13,6 +13,12 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#ifdef __GNUC__ +# define ATTR __attribute__((always_inline)) +#else +# define ATTR +#endif + extern int x, y; extern volatile int z; @@ -26,7 +32,7 @@ void marker(void) x += y - z; /* set breakpoint 2 here */ } -inline void inlined_fn(void) +inline ATTR void inlined_fn(void) { x += y + z; } |