r228588 - DebugInfo: Suppress the location of instructions in aggregate default arguments.

Frédéric Riss friss at apple.com
Mon Feb 9 11:07:42 PST 2015


> On Feb 9, 2015, at 10:47 AM, David Blaikie <dblaikie at gmail.com> wrote:
> 
> Author: dblaikie
> Date: Mon Feb  9 12:47:14 2015
> New Revision: 228588
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=228588&view=rev
> Log:
> DebugInfo: Suppress the location of instructions in aggregate default arguments.
> 
> Matches the existing code for scalar default arguments. Complex default
> arguments probably need the same handling too (test/fix to that coming
> next).

What was the behavior before that? Was the location set to the declaration with the default argument description? I think I wouldn’t matter my debugger jumping there when the code actually does something non-trivial to initialize the argument(s).

Fred

> Modified:
>    cfe/trunk/lib/CodeGen/CGExprAgg.cpp
>    cfe/trunk/test/CodeGenCXX/debug-info-line.cpp
> 
> Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=228588&r1=228587&r2=228588&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Mon Feb  9 12:47:14 2015
> @@ -1387,7 +1387,12 @@ void CodeGenFunction::EmitAggExpr(const
>   // Optimize the slot if possible.
>   CheckAggExprForMemSetUse(Slot, E, *this);
> 
> +  bool hasDebugInfo = getDebugInfo();
> +  if (isa<CXXDefaultArgExpr>(E))
> +    disableDebugInfo();
>   AggExprEmitter(*this, Slot).Visit(const_cast<Expr*>(E));
> +  if (isa<CXXDefaultArgExpr>(E) && hasDebugInfo)
> +    enableDebugInfo();
> }
> 
> LValue CodeGenFunction::EmitAggExprToLValue(const Expr *E) {
> 
> Modified: cfe/trunk/test/CodeGenCXX/debug-info-line.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-line.cpp?rev=228588&r1=228587&r2=228588&view=diff
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/debug-info-line.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/debug-info-line.cpp Mon Feb  9 12:47:14 2015
> @@ -274,6 +274,17 @@ void f22() {
>   }
> }
> 
> +// CHECK-LABEL: define
> +struct f23_struct {
> +};
> +f23_struct f23_a();
> +void f23_b(f23_struct = f23_a());
> +void f23() {
> +// CHECK: call {{.*}}f23_a{{.*}}, !dbg [[DBG_F23:![0-9]*]]
> +#line 2500
> +  f23_b();
> +}
> +
> // CHECK: [[DBG_F1]] = !MDLocation(line: 100,
> // CHECK: [[DBG_FOO_VALUE]] = !MDLocation(line: 200,
> // CHECK: [[DBG_FOO_REF]] = !MDLocation(line: 202,
> @@ -302,3 +313,4 @@ void f22() {
> // CHECK: [[DBG_F19_1]] = !MDLocation(line: 2100,
> // CHECK: [[DBG_F19_2]] = !MDLocation(line: 2101,
> // CHECK: [[DBG_F20_1]] = !MDLocation(line: 2200,
> +// CHECK: [[DBG_F23]] = !MDLocation(line: 2500,
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits





More information about the cfe-commits mailing list