summaryrefslogtreecommitdiff
path: root/gcc/ada/tbuild.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-06-06 10:52:32 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-06-06 10:52:32 +0000
commit59ca7bac23b6b53257582966f19a3e84ea0138a2 (patch)
tree162a23fa1dc6b2cfca448b3db6905b462f282b70 /gcc/ada/tbuild.adb
parent115a8ff95a7b32496cbaf73f390aaaa335b5501e (diff)
downloadgcc-59ca7bac23b6b53257582966f19a3e84ea0138a2.tar.gz
2007-04-20 Robert Dewar <dewar@adacore.com>
* a-reatim.adb: Documentation addition * g-cgideb.adb: Minor code reorganization * tree_io.adb, treepr.adb, cstand.adb, krunch.adb, par.adb, mdll-utl.adb, par-ch5.adb, par-tchk.adb, s-exctab.ads, s-memory.ads, s-osprim.ads, s-restri.ads, s-soflin.ads: Minor reformatting. * debug.ads, debug.adb (Get_Debug_Flag_K): Remove unused obsolete function. Change name New_Scope to Push_Scope (Get_Debug_Flag_K): Remove unused obsolete function. * exp_ch8.adb, inline.adb, sem_ch8.ads: Change name New_Scope to Push_Scope. * makeusg.adb: Update Copyright notice Add line for switch -aP * makeusg.adb: Fix wording of some usage messages * s-assert.adb (Raise_Assert_Failure): Add call to Debug_Raise_Assert_Failure. * s-unstyp.ads (type Packed_Bytes2): Change alignment to use 'Min (2, Standard'Alignment) for compatibility with AAMP (where alignment is restricted to 1). * s-wchjis.adb: Remove use of System.Pure_Exceptions * tbuild.ads, tbuild.adb (Make_Implicit_Exception_Handler): Set the node location to No_Location when we're not debugging the expanded code. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125478 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/tbuild.adb')
-rw-r--r--gcc/ada/tbuild.adb32
1 files changed, 27 insertions, 5 deletions
diff --git a/gcc/ada/tbuild.adb b/gcc/ada/tbuild.adb
index 543379079d1..040fa9e5611 100644
--- a/gcc/ada/tbuild.adb
+++ b/gcc/ada/tbuild.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2007, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -28,9 +28,9 @@ with Atree; use Atree;
with Einfo; use Einfo;
with Elists; use Elists;
with Lib; use Lib;
-with Namet; use Namet;
with Nlists; use Nlists;
with Nmake; use Nmake;
+with Opt; use Opt;
with Restrict; use Restrict;
with Rident; use Rident;
with Sinfo; use Sinfo;
@@ -209,10 +209,32 @@ package body Tbuild is
Exception_Choices : List_Id;
Statements : List_Id) return Node_Id
is
- Handler : constant Node_Id :=
- Make_Exception_Handler
- (Sloc, Choice_Parameter, Exception_Choices, Statements);
+ Handler : Node_Id;
+ Loc : Source_Ptr;
+
begin
+ -- Set the source location only when debugging the expanded code
+
+ -- When debugging the source code directly, we do not want the compiler
+ -- to associate this implicit exception handler with any specific source
+ -- line, because it can potentially confuse the debugger. The most
+ -- damaging situation would arise when the debugger tries to insert a
+ -- breakpoint at a certain line. If the code of the associated implicit
+ -- exception handler is generated before the code of that line, then the
+ -- debugger will end up inserting the breakpoint inside the exception
+ -- handler, rather than the code the user intended to break on. As a
+ -- result, it is likely that the program will not hit the breakpoint
+ -- as expected.
+
+ if Debug_Generated_Code then
+ Loc := Sloc;
+ else
+ Loc := No_Location;
+ end if;
+
+ Handler :=
+ Make_Exception_Handler
+ (Loc, Choice_Parameter, Exception_Choices, Statements);
Set_Local_Raise_Statements (Handler, No_Elist);
return Handler;
end Make_Implicit_Exception_Handler;