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