diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-06 10:52:32 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-06 10:52:32 +0000 |
commit | 59ca7bac23b6b53257582966f19a3e84ea0138a2 (patch) | |
tree | 162a23fa1dc6b2cfca448b3db6905b462f282b70 /gcc/ada/tbuild.adb | |
parent | 115a8ff95a7b32496cbaf73f390aaaa335b5501e (diff) | |
download | gcc-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.adb | 32 |
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; |