https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94340

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
apinski@xeond:~/src/upstream-gcc$ diff -up nodiscard3.C.gkd nodiscard3.gk.C.gkd
--- nodiscard3.C.gkd    2021-09-20 07:45:03.448528331 +0000
+++ nodiscard3.gk.C.gkd 2021-09-20 07:45:04.373528230 +0000
@@ -2190,10 +2190,10 @@ Declarations used by test, sorted by DEC
 (note # 0 0 NOTE_INSN_DELETED)
 (insn # 0 0 166 (set (reg:DI 5 di [406])
         (plus:DI (reg/f:DI 7 sp)
-            (const_int 7280 [0x1c70])))
"gcc/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C":198:7# {*leadi}
+            (const_int 7280 [0x1c70])))
"gcc/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C":198:18# {*leadi}
      (nil))
 (call_insn # 0 0 166 (call (mem:QI (symbol_ref:DI ("_Z7check12v") [flags 0x41]
 <function_decl # check12>) [ check12 S1 A8])
-        (const_int 0 [0]))
"gcc/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C":198:7# {*call}
+        (const_int 0 [0]))
"gcc/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C":198:18# {*call}
      (expr_list:REG_DEAD (reg:DI 5 di)
         (expr_list:REG_EH_REGION (const_int 2 [0x2])
             (nil)))

Literally just column differences.



>From .gimple:
-          [gcc/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C:198:7] D.2655 = check12
(); [return slot optimization]
+          [gcc/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C:198:3] # DEBUG
BEGIN_STMT
+          [gcc/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C:198:10] # DEBUG
BEGIN_STMT
+          [gcc/gcc/testsuite/g++.dg/cpp1z/nodiscard3.C:198:18] D.2655 =
check12 (); [return slot optimization]


The correct line/column is actually with debugging turned on ....
column 7 is the start of the statement expression.

-      if (<<cleanup_point (TARGET_EXPR <D.2655, <<cleanup_point TARGET_EXPR
<D.2654, <<< Unknown tree: aggr_init_expr
+      # DEBUG BEGIN STMT;
+      if (<<cleanup_point (TARGET_EXPR <D.2655, # DEBUG BEGIN STMT;
+      <<cleanup_point TARGET_EXPR <D.2654, <<< Unknown tree: aggr_init_expr
   3
   check12
-  D.2654 >>>>>>>).i != 0>>)
+  D.2654 >>>>>>;>).i != 0>>)


I wonder if this is a gimplification issue where the call gets the
TARGET_EXPR's location info if the TARGET_EXPR can be removed ...  Just happens
with the statement frontiers, that the TARGET_EXPR can no longer exactly be
removed so the location info is not copied.

Reply via email to