diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/ada-lang.c | 1 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/optim_drec.exp | 34 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/optim_drec/foo.adb | 25 |
5 files changed, 69 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f70ee71..01604a8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2012-09-10 Joel Brobecker <brobecker@adacore.com> + + * ada-lang.c (coerce_unspec_val_to_type): Make sure that + the optimized_out flag is preserved. + 2012-09-10 Anthony Green <green@moxielogic.com> * moxie-tdep.c (moxie_analyze_prologue): Update for function diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index bba045b..f45815f 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -581,6 +581,7 @@ coerce_unspec_val_to_type (struct value *val, struct type *type) set_value_bitsize (result, value_bitsize (val)); set_value_bitpos (result, value_bitpos (val)); set_value_address (result, value_address (val)); + set_value_optimized_out (result, value_optimized_out (val)); return result; } } diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b33b6fa..e9db80f 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-09-10 Joel Brobecker <brobecker@adacore.com> + + * gdb.ada/optim_drec: New testcase. + 2012-09-10 Doug Evans <dje@google.com> * boards/fission.exp: Explicitly mark "board" as not remote. diff --git a/gdb/testsuite/gdb.ada/optim_drec.exp b/gdb/testsuite/gdb.ada/optim_drec.exp new file mode 100644 index 0000000..6508e04 --- /dev/null +++ b/gdb/testsuite/gdb.ada/optim_drec.exp @@ -0,0 +1,34 @@ +# Copyright 2012 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +load_lib "ada.exp" + +standard_ada_testfile foo + +if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } { + return -1 +} + +clean_restart ${testfile} + +if ![runto "foo" ] then { + perror "Couldn't run ${testfile}" + return +} + +gdb_test "print z" \ + "= (\\(a => .*, b => .*, c => .*\\)|<optimized out>)" + + diff --git a/gdb/testsuite/gdb.ada/optim_drec/foo.adb b/gdb/testsuite/gdb.ada/optim_drec/foo.adb new file mode 100644 index 0000000..88fd652 --- /dev/null +++ b/gdb/testsuite/gdb.ada/optim_drec/foo.adb @@ -0,0 +1,25 @@ +-- Copyright 2012 Free Software Foundation, Inc. +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +procedure Foo is + type Discriminants_Record (A : Integer; B : Boolean) is record + C : Float; + end record; + -- The following variable is unused on purpose, and might be + -- optimized out by the compiler. + Z : Discriminants_Record := (A => 1, B => False, C => 2.0); +begin + null; +end Foo; |