[Bug go/66332] New: goacc/acc_on_device-2.c scan-rtl-dump-times expand testsuite failure

jpsinthemix at verizon dot net gcc-bugzilla@gcc.gnu.org
Fri May 29 01:46:00 GMT 2015


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

            Bug ID: 66332
           Summary: goacc/acc_on_device-2.c scan-rtl-dump-times expand
                    testsuite failure
           Product: gcc
           Version: 5.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: go
          Assignee: ian at airs dot com
          Reporter: jpsinthemix at verizon dot net
                CC: cmang at google dot com
  Target Milestone: ---

Hi,

I'm getting the following openacc-related testsuite error for gcc-5.1.0 on an
x86_64-pc-linux-gnu system:

FAIL: c-c++-common/goacc/acc_on_device-2.c scan-rtl-dump-times expand "\\(call
[^\\n]* acc_on_device" 0

This failure does not appear to be related to BUG 64850.

The failure occurs in
gcc-5.1.0/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c:27

  1 /* Have to enable optimizations, as otherwise builtins won't be expanded. 
*/
  2 /* { dg-additional-options "-O -fdump-rtl-expand" } */
  3 
  4 #if __cplusplus
  5 extern "C" {
  6 #endif
  7 
  8 typedef enum acc_device_t { acc_device_X = 123 } acc_device_t;
  9 extern int acc_on_device (acc_device_t);
 10 
 11 #if __cplusplus
 12 }
 13 #endif
 14 
 15 int
 16 f (void)
 17 {
 18   const acc_device_t dev = acc_device_X;
 19   return acc_on_device (dev);
 20 }
 21 
 22 /* With -fopenacc, we're expecting the builtin to be expanded, so no calls.
 23    TODO: in C++, even under extern "C", the use of enum for acc_device_t
 24    perturbs expansion as a builtin, which expects an int parameter.  It's
fine
 25    when changing acc_device_t to plain int, but that's not what we're doing
in
 26    <openacc.h>.
 27    { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 0
"expand" { xfail c++ } } } */
 28
 29 /* { dg-final { cleanup-rtl-dump "expand" } } */

Running:

/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/build/gcc/xgcc
-B/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/build/gcc/
/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/gcc-5.1.0/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c
-fno-diagnostics-show-caret -fdiagnostics-color=never -fopenacc -O
-fdump-rtl-expand -ffat-lto-objects -S -o acc_on_device-2.s

I get (acc_on_device-2.s):

  1         .file   "acc_on_device-2.c"
  2         .text
  3         .globl  f
  4         .type   f, @function
  5 f:
  6 .LFB0:
  7         .cfi_startproc
  8         subq    $8, %rsp
  9         .cfi_def_cfa_offset 16
 10         movl    $123, %edi
 11         call    acc_on_device
 12         addq    $8, %rsp
 13         .cfi_def_cfa_offset 8
 14         ret
 15         .cfi_endproc
 16 .LFE0:
 17         .size   f, .-f
 18         .ident  "GCC: (GNU) 5.1.0"
 19         .section        .note.GNU-stack,"",@progbits

and (acc_on_device-2.c.191r.expand):

  1
  2 ;; Function f (f, funcdef_no=0, decl_uid=1846, cgraph_uid=0,
symbol_order=0)
  3
  4
  5 ;; Generating RTL for gimple basic block 2
  6
  7
  8 try_optimize_cfg iteration 1
  9
 10 Merging block 3 into block 2...
 11 Merged blocks 2 and 3.
 12 Merged 2 and 3 without moving.
 13 Removing jump 11.
 14 Merging block 4 into block 2...
 15 Merged blocks 2 and 4.
 16 Merged 2 and 4 without moving.
 17
 18
 19 try_optimize_cfg iteration 2
 20
 21
 22
 23 ;;
 24 ;; Full RTL generated for this function:
 25 ;;
 26 (note 1 0 3 NOTE_INSN_DELETED)
 27 (note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
 28 (note 2 3 5 2 NOTE_INSN_FUNCTION_BEG)
 29 (insn 5 2 6 2 (set (reg:SI 5 di)
 30         (const_int 123 [0x7b]))
/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/gcc-5.1.0/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c:19
-1
 31      (nil))
 32 (call_insn/u 6 5 7 2 (set (reg:SI 0 ax)
 33         (call (mem:QI (symbol_ref:DI ("acc_on_device") [flags 0x41] 
<function_decl 0x7f1eaf74b870 acc_on_device>) [0 __builtin_acc_on_device S1
A8])
 34             (const_int 0 [0])))
/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/gcc-5.1.0/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c:19
-1
 35      (expr_list:REG_EH_REGION (const_int 0 [0])
 36         (nil))
 37     (expr_list:SI (use (reg:SI 5 di))
 38         (nil)))
 39 (insn 7 6 8 2 (set (reg:SI 89)
 40         (reg:SI 0 ax))
/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/gcc-5.1.0/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c:19
-1
 41      (nil))
 42 (insn 8 7 9 2 (set (reg:SI 90)
 43         (reg:SI 89))
/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/gcc-5.1.0/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c:19
-1
 44      (nil))
 45 (insn 9 8 10 2 (set (reg:SI 87 [ D.1855 ])
 46         (reg:SI 90))
/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/gcc-5.1.0/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c:19
-1
 47      (nil))
 48 (insn 10 9 14 2 (set (reg:SI 88 [ <retval> ])
 49         (reg:SI 87 [ D.1855 ]))
/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/gcc-5.1.0/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c:19
-1
 50      (nil))
 51 (insn 14 10 15 2 (set (reg/i:SI 0 ax)
 52         (reg:SI 88 [ <retval> ]))
/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/gcc-5.1.0/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c:20
-1
 53      (nil))
 54 (insn 15 14 0 2 (use (reg/i:SI 0 ax))
/home/pkgbase/bld/gcc.5.1.0-x86_64-build4/gcc-5.1.0/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c:20
-1
 55      (nil))

The test fails because the "(call .." regexp should not occur with -fopenacc
(the '0' argument to scan-rtl-dump-times at acc_on_device-2.c:27), but it is
apparently detected on at acc_on_device-2.c.191r.expand:33.

Unfortunately, I haven't the slightest idea about what is going on with this
test, but am wondering if it is serious or not.


thanks much for your time and work,
John Stanley



More information about the Gcc-bugs mailing list