Re: [PATCH] aix: handle 64bit inodes for include directories

2021-05-22 Thread David Edelsohn via Gcc-patches
+DavidMalcolm

Can you review this patch when you have a moment?

Thanks, David

On Mon, May 17, 2021 at 3:05 PM David Edelsohn  wrote:
>
> The aix.h change is okay with me, but you need to get approval for the
> incpath.c and cpplib.h parts of the patch from the appropriate
> maintainers.
>
> Thanks, David
>
> On Mon, May 17, 2021 at 7:44 AM CHIGOT, CLEMENT  
> wrote:
> >
> > On AIX, stat will store inodes in 32bit even when using LARGE_FILES.
> > If the inode is larger, it will return -1 in st_ino.
> > Thus, in incpath.c when comparing include directories, if several
> > of them have 64bit inodes, they will be considered as duplicated.
> >
> > gcc/ChangeLog:
> > 2021-05-06  Clément Chigot  
> >
> > * configure.ac: Check sizeof ino_t and dev_t.
> > * config.in: Regenerate.
> > * configure: Regenerate.
> > * config/rs6000/aix.h (HOST_STAT_FOR_64BIT_INODES): New define.
> > * incpath.c (HOST_STAT_FOR_64BIT_INODES): New define.
> > (remove_duplicates): Use it.
> >
> > libcpp/ChangeLog:
> > 2021-05-06  Clément Chigot  
> >
> > * configure.ac: Check sizeof ino_t and dev_t.
> > * config.in: Regenerate.
> > * configure: Regenerate.
> > * include/cpplib.h (INO_T_CPP): Change for AIX.
> > (DEV_T_CPP): New macro.
> > (struct cpp_dir): Use it.
> >
> >
> >


[_GLIBCXX_DEBUG] Enhance rendering of assert message

2021-05-22 Thread François Dumont via Gcc-patches
Here is the part of the libbacktrace patch with the enhancement to the 
rendering of assert message.


It only contains one real fix, the rendering of address. In 2 places it 
was done with "0x%p", so resulting in something like: 0x0x012345678


Otherwise it is just enhancements, mostly avoiding intermediate buffering.

I am adding the _Parameter::_Named type to help on the rendering. I 
hesitated in doing the same for the _M_iterator type but eventually 
managed it with a template function.


    libstdc++: [_GLIBCXX_DEBUG] Enhance rendering of assert message

    Avoid building an intermediate buffer to print to stderr, push 
directly to stderr.


    libstdc++-v3/ChangeLog:

    * include/debug/formatter.h
    (_Error_formatter::_Parameter::_Named): New.
    (_Error_formatter::_Parameter::_Type): Inherit latter.
    (_Error_formatter::_Parameter::_M_integer): Likewise.
    (_Error_formatter::_Parameter::_M_string): Likewise.
    * src/c++11/debug.cc: Include .
    (_Print_func_t): New.
    (print_raw(PrintContext&, const char*, ptrdiff_t)): New.
    (print_word): Use '%.*s' format in fprintf to render only 
expected number of chars.

    (pretty_print(PrintContext&, const char*, _Print_func_t)): New.
    (print_type): Rename in...
    (print_type_info): ...this. Use pretty_print.
    (print_address, print_integer): New.
    (print_named_name, print_iterator_constness, 
print_iterator_state): New.

    (print_iterator_seq_type): New.
    (print_named_field, print_type_field, print_instance_field, 
print_iterator_field): New.

    (print_field): Use latters.
    (print_quoted_named_name, print_type_type, print_type, 
print_instance): New.
    (print_string(PrintContext&, const char*, const 
_Parameter*, size_t)):

    Change signature to...
    (print_string(PrintContext&, const char*, ptrdiff_t, const 
_Parameter*, size_t)):
    ...this and adapt. Remove intermediate buffer to render 
input string.

    (print_string(PrintContext&, const char*, ptrdiff_t)): New.

Ok to commit ?

François

diff --git a/libstdc++-v3/include/debug/formatter.h b/libstdc++-v3/include/debug/formatter.h
index 7140fed5e83..a83d33a4cb8 100644
--- a/libstdc++-v3/include/debug/formatter.h
+++ b/libstdc++-v3/include/debug/formatter.h
@@ -202,9 +202,13 @@ namespace __gnu_debug
 	__iterator_value_type
   } _M_kind;
 
-  struct _Type
+  struct _Named
   {
 	const char*		_M_name;
+  };
+
+  struct _Type : _Named
+  {
 	const type_info*	_M_type;
   };
 
@@ -228,16 +232,14 @@ namespace __gnu_debug
 	_Instance _M_sequence;
 
 	// When _M_kind == __integer
-	struct
+	struct : _Named
 	{
-	  const char*		_M_name;
 	  long			_M_value;
 	} _M_integer;
 
 	// When _M_kind == __string
-	struct
+	struct : _Named
 	{
-	  const char*		_M_name;
 	  const char*		_M_value;
 	} _M_string;
 
diff --git a/libstdc++-v3/src/c++11/debug.cc b/libstdc++-v3/src/c++11/debug.cc
index 5a642097d17..8b6ad73f950 100644
--- a/libstdc++-v3/src/c++11/debug.cc
+++ b/libstdc++-v3/src/c++11/debug.cc
@@ -34,16 +34,12 @@
 
 #include 
 #include 
-#include  // for std::isspace
+#include 	// for std::isspace.
+#include 	// for std::strstr.
 
-#include  // for std::min
+#include 	// for std::min.
 
-#include  // for __cxa_demangle
-
-// libstdc++/85768
-#if 0 // defined _GLIBCXX_HAVE_EXECINFO_H
-# include  // for backtrace
-#endif
+#include 	// for __cxa_demangle.
 
 #include "mutex_pool.h"
 
@@ -574,7 +570,7 @@ namespace
   struct PrintContext
   {
 PrintContext()
-  : _M_max_length(78), _M_column(1), _M_first_line(true), _M_wordwrap(false)
+: _M_max_length(78), _M_column(1), _M_first_line(true), _M_wordwrap(false)
 { get_max_length(_M_max_length); }
 
 std::size_t	_M_max_length;
@@ -584,16 +580,26 @@ namespace
 bool	_M_wordwrap;
   };
 
+  using _Print_func_t = void (PrintContext&, const char*, ptrdiff_t);
+
   template
 void
 print_literal(PrintContext& ctx, const char()[Length])
 { print_word(ctx, word, Length - 1); }
 
   void
-  print_word(PrintContext& ctx, const char* word,
-	 std::ptrdiff_t count = -1)
+  print_raw(PrintContext& ctx, const char* str, ptrdiff_t nbc = -1)
   {
-size_t length = count >= 0 ? count : __builtin_strlen(word);
+if (nbc >= 0)
+  ctx._M_column += fprintf(stderr, "%.*s", (int)nbc, str);
+else
+  ctx._M_column += fprintf(stderr, "%s", str);
+  }
+
+  void
+  print_word(PrintContext& ctx, const char* word, ptrdiff_t nbc = -1)
+  {
+size_t length = nbc >= 0 ? nbc : __builtin_strlen(word);
 if (length == 0)
   return;
 
@@ -610,7 +616,7 @@ namespace
   }
 
 size_t visual_length
-  = isspace(word[length - 1]) ? length - 1 : length;
+  = isspace((unsigned char)word[length - 1]) ? length - 1 : length;
 if (visual_length == 0
 	|| !ctx._M_wordwrap
 	

Re: [Ping^2, Patch, Fortran] PR98301 Re: RANDOM_INIT() and coarray Fortran

2021-05-22 Thread Martin Liška

On 5/22/21 1:39 PM, Andre Vehreschild via Gcc-patches wrote:

Hi Steve and Jerry,

thanks for the ok'ing.

Committed as https://gcc.gnu.org/g:26ca6dbda23bc6dfab96ce07afa70ebacedfaf9c
and https://gcc.gnu.org/g:c4771b3438a8cd9afcef1762957b763f8df3fa6e (for the
missing changelog entries).


Hello.

About the missing changelog entries. The will be added automatically by Daily 
bump.
You can check it with:
./contrib/gcc-changelog/git_check_commit.py 
26ca6dbda23bc6dfab96ce07afa70ebacedfaf9c -p

What's missing for you so that you pushed 
c4771b3438a8cd9afcef1762957b763f8df3fa6e?

Thanks,
Martin



- Andre

On Fri, 21 May 2021 19:38:00 -0700
Jerry D  wrote:


yes, please commit

On 5/21/21 8:08 AM, Steve Kargl via Fortran wrote:

On Fri, May 21, 2021 at 10:09:02AM +0200, Andre Vehreschild wrote:

Ping, ping!

Please find attached a rebased version of the patch for the RANDOM_INIT
issue with coarray Fortran. Nothing changed to the previous version, just
rebased to current master.

Regtested fine on x86_64-linux/f33. Ok for trunk?


I think you've down your due diligence with 2 pings.
I would commit.






--
Andre Vehreschild * Email: vehre ad gmx dot de





Re: [PATCH] Hashtable PR96088

2021-05-22 Thread François Dumont via Gcc-patches

This was indeed the right approach.

    The only minor drawback is that __is_noexcept_invocable<> combines 
noexcept qualification of the conversion and of the hash functor. So if 
the hash functor is not noexcept we could end up creating temporaries 
for nothing.


    So I've eventually used this condition:

__and_<__is_nothrow_invocable<_Hash&, const key_type&>,
         __not_<__is_nothrow_invocable<_Hash&, _Kt>>>::value,

    so that we do not create a temporary key_type if invoking _Hash 
with it can still throw.


    libstdc++: Limit allocation on iterator insertion in Hashtable [PR 
96088]


    When inserting into unordered_multiset or unordered_multimap first 
instantiate
    the node to store and compute the hash code from it to avoid a 
potential

    intermediate key_type instantiation.

    When inserting into unordered_set or unordered_map check if 
invoking the hash
    functor with container key_type is noexcept and invoking the same 
hash functor
    with key part of the iterator value_type can throw. In this case 
create a
    temporary key_type instance at Hashtable level and use it to 
compute the hash
    code. This temporary instance is moved to the final storage 
location if needed.


    libstdc++-v3/ChangeLog:

    PR libstdc++/96088
    * include/bits/hashtable_policy.h (_Select2nd): New.
    (_NodeBuilder<>): New.
    (_ReuseOrAllocNode<>::operator()): Use variadic template args.
    (_AllocNode<>::operator()): Likewise.
    * include/bits/hashtable.h
    (_Hashtable<>::__node_builder_t): New.
(_Hashtable<>::_M_insert_unique<>(_Kt&&, _Arg&&, const _NodeGenerator&)):
 New.
    (_Hashtable<>::_S_forward_key): New.
    (_Hashtable<>::_M_insert): Use latter.
    (_Hashtable<>::_M_insert(const_iterator, _Arg&&, const 
_NodeGenerator&, false_type)):

    Instantiate node first, compute hash code second.
    * testsuite/23_containers/unordered_map/96088.cc: New test.
    * testsuite/23_containers/unordered_multimap/96088.cc: New 
test.
    * testsuite/23_containers/unordered_multiset/96088.cc: New 
test.

    * testsuite/23_containers/unordered_set/96088.cc: New test.
    * testsuite/util/replacement_memory_operators.h
    (counter::_M_increment): New.
    (counter::_M_decrement): New.
    (counter::reset()): New.

Tested under Linux x64.

Ok to commit ?

François

On 21/05/21 8:55 am, Jonathan Wakely wrote:



On Fri, 21 May 2021, 07:48 Jonathan Wakely, > wrote:




On Fri, 21 May 2021, 07:31 François Dumont via Libstdc++,
mailto:libstdc%2b...@gcc.gnu.org>> wrote:

On 20/05/21 6:44 pm, Jonathan Wakely wrote:
> On 06/05/21 22:03 +0200, François Dumont via Libstdc++ wrote:
>> Hi
>>
>>     Considering your feedback on backtrace in debug mode is
going to
>> take me some time so here is another one.
>>
>>     Compared to latest submission I've added a _Hash_arg_t
partial
>> specialization for std::hash<>. It is not strictly
necessary for the
>> moment but when we will eventually remove its nested
argument_type it
>> will be. I also wonder if it is not easier to handle for the
>> compiler, not sure about that thought.
>
> The std::hash specializations in libstdc++ define
argument_type, but
> I'm already working on one that doesn't (forstd::stacktrace).
>
> And std::hash can be specialized
by users,
> and is not required to provide argument_type.
>
> So it's already not valid to assume that
std::hash::argument_type
> exists.

Yes, I know that the plan is to get rid of argument_type. But
as long as
it is there we can still use it even if I didn't realize that
you were
already in the process of removing it so soon.


I'm adding a new specialization for a C++23 type, and not adding
the nested types.




>
>> @@ -850,9 +852,56 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>> iterator
>> _M_emplace(const_iterator, false_type __uks, _Args&&...
__args);
>>
>> +  template
>> +    std::pair
>> +    _M_insert_unique(_Kt&&, _Arg&&, const _NodeGenerator&);
>> +
>> +  // Detect nested argument_type.
>> +  template>
>> +    struct _Hash_arg_t
>> +    { typedef _Kt argument_type; };
>> +
>> +  // std::hash
>> +  template
>> +    struct _Hash_arg_t<_Kt, std::hash<_Arg>>
>> +    { typedef _Arg argument_type; };
>> +
>> +  // Nested argument_type.
>> +  template
>> +    struct _Hash_arg_t<_Kt, _Ht,
>> +  __void_t>
 

Re: RFA: avoid infinite lra loop for constant addresses

2021-05-22 Thread Segher Boessenkool
On Tue, May 18, 2021 at 11:52:27AM -0600, Jeff Law via Gcc-patches wrote:
> On 5/18/2021 2:56 AM, Joern Rennecke wrote:
> >I find that when compiling some files, lra goes into an infinite loop
> >reloading constant
> >addresses.  This patch allows them to just be recognized as matching 
> >addresses
> >immediately, which also saves a bit of space for a few other files.
> >
> >Bootstrapped and regression tested on x86_64-pc-linux-gnu.
> >
> >process_addr_reg-elim.txt
> >
> >gcc/
> > * lra-constraints.c: New arguments mem_mode and as.  Changed caller.
> > If equivalence search has yielded a constant that is valid as an
> > address, use it.
> 
> At first glance it seems to me like you're papering over a target bug.  

Yeah.  It means that curr_insn_transform did not return early, which it
should if the insn is a single_set (likely, but Joern didn't show the
actual insns, so we don't know), or simple_move_p isn't true.  And the
latter means that register_move_cost isn't 2, which all trivial moves
should have.

Does that help?


Segher


[PATCH] Pass the number of bytes to push to PUSH_ARGS

2021-05-22 Thread H.J. Lu via Gcc-patches
1. Update PUSH_ARGS to accept an argument.  When the PUSH instruction
usage is optional, pass the number of bytes to push to PUSH_ARGS so that
the backend can decide if PUSH instructions should be generated.
2. Change x86 PUSH_ARGS to return 0 when number of bytes to push is more
than a word to avoid generating non-existent PUSH instructions.
3. Remove target PUSH_ARGS definitions which return 0 as it is the same
as the default.

gcc/

PR target/100704
* calls.c (expand_call): Add 0 to PUSH_ARGS.
(emit_library_call_value_1): Likewise.
* defaults.h (PUSH_ARGS): Add npush.
(PUSH_ARGS_REVERSED): Add 0 to PUSH_ARGS.
* expr.c (block_move_libcall_safe_for_call_parm): Add 0 to
PUSH_ARGS.
(emit_push_insn): Pass the number bytes to push to PUSH_ARGS.
Pass 0 to PUSH_ARGS if ARGS_ADDR is 0.
* rtlanal.c (nonzero_bits1): Add 0 to PUSH_ARGS.
* config/bpf/bpf.h (PUSH_ARGS): Removed.
* config/cr16/cr16.h (PUSH_ARGS): Updated.
* config/i386/i386.h (PUSH_ARGS): Return 0 if the number of
bytes to push is more than UNITS_PER_WORD.
* config/m32c/m32c.h (PUSH_ARGS): Updated.
* config/nios2/nios2.h (PUSH_ARGS): Removed.
* config/pru/pru.h (PUSH_ARGS): Removed.
* doc/tm.texi.in: Update PUSH_ARGS documentation.
* doc/tm.texi: Regenerated.

gcc/testsuite/

PR target/100704
* gcc.target/i386/pr100704-1.c: New test.
* gcc.target/i386/pr100704-2.c: Likewise.
---
 gcc/calls.c|  6 +++---
 gcc/config/bpf/bpf.h   |  3 ---
 gcc/config/cr16/cr16.h |  2 +-
 gcc/config/i386/i386.h | 12 +++
 gcc/config/m32c/m32c.h |  2 +-
 gcc/config/nios2/nios2.h   |  1 -
 gcc/config/pru/pru.h   |  1 -
 gcc/defaults.h |  6 +++---
 gcc/doc/tm.texi|  8 +---
 gcc/doc/tm.texi.in |  8 +---
 gcc/expr.c | 14 ++---
 gcc/rtlanal.c  |  2 +-
 gcc/testsuite/gcc.target/i386/pr100704-1.c | 24 ++
 gcc/testsuite/gcc.target/i386/pr100704-2.c | 23 +
 14 files changed, 85 insertions(+), 27 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr100704-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr100704-2.c

diff --git a/gcc/calls.c b/gcc/calls.c
index f3da1839dc5..0cb7c23d310 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -3727,7 +3727,7 @@ expand_call (tree exp, rtx target, int ignore)
  So the entire argument block must then be preallocated (i.e., we
  ignore PUSH_ROUNDING in that case).  */
 
-  int must_preallocate = !PUSH_ARGS;
+  int must_preallocate = !PUSH_ARGS (0);
 
   /* Size of the stack reserved for parameter registers.  */
   int reg_parm_stack_space = 0;
@@ -3836,7 +3836,7 @@ expand_call (tree exp, rtx target, int ignore)
 #endif
 
   if (! OUTGOING_REG_PARM_STACK_SPACE ((!fndecl ? fntype : TREE_TYPE (fndecl)))
-  && reg_parm_stack_space > 0 && PUSH_ARGS)
+  && reg_parm_stack_space > 0 && PUSH_ARGS (0))
 must_preallocate = 1;
 
   /* Set up a place to return a structure.  */
@@ -5477,7 +5477,7 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx 
value,
 }
   else
 {
-  if (!PUSH_ARGS)
+  if (!PUSH_ARGS (0))
argblock = push_block (gen_int_mode (args_size.constant, Pmode), 0, 0);
 }
 
diff --git a/gcc/config/bpf/bpf.h b/gcc/config/bpf/bpf.h
index 4c5b19e262b..80195cea5b2 100644
--- a/gcc/config/bpf/bpf.h
+++ b/gcc/config/bpf/bpf.h
@@ -288,9 +288,6 @@ enum reg_class
never used when passing arguments.  However, we still have to
define the constants below.  */
 
-/* If nonzero, push insns will be used to pass outgoing arguments.  */
-#define PUSH_ARGS 0
-
 /* If nonzero, function arguments will be evaluated from last to
first, rather than from first to last.  */
 #define PUSH_ARGS_REVERSED 1
diff --git a/gcc/config/cr16/cr16.h b/gcc/config/cr16/cr16.h
index 4ce9e81b0e3..68db73348bf 100644
--- a/gcc/config/cr16/cr16.h
+++ b/gcc/config/cr16/cr16.h
@@ -376,7 +376,7 @@ enum reg_class
 
 #define ACCUMULATE_OUTGOING_ARGS 0
 
-#define PUSH_ARGS 1
+#define PUSH_ARGS(npush) 1
 
 #define PUSH_ROUNDING(BYTES) cr16_push_rounding (BYTES)
 
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 53d503fc6e0..48b99033c28 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -1462,10 +1462,14 @@ enum reg_class
|| TARGET_64BIT_MS_ABI \
|| (TARGET_MACHO && crtl->profile))
 
-/* If defined, a C expression whose value is nonzero when we want to use PUSH
-   instructions to pass outgoing arguments.  */
-
-#define PUSH_ARGS (TARGET_PUSH_ARGS && !ACCUMULATE_OUTGOING_ARGS)
+/* If defined, a C expression whose value is nonzero when we want to
+   use PUSH 

Re: [Ping^2, Patch, Fortran] PR98301 Re: RANDOM_INIT() and coarray Fortran

2021-05-22 Thread Andre Vehreschild via Gcc-patches
Hi Steve and Jerry,

thanks for the ok'ing.

Committed as https://gcc.gnu.org/g:26ca6dbda23bc6dfab96ce07afa70ebacedfaf9c
and https://gcc.gnu.org/g:c4771b3438a8cd9afcef1762957b763f8df3fa6e (for the
missing changelog entries).

- Andre

On Fri, 21 May 2021 19:38:00 -0700
Jerry D  wrote:

> yes, please commit
>
> On 5/21/21 8:08 AM, Steve Kargl via Fortran wrote:
> > On Fri, May 21, 2021 at 10:09:02AM +0200, Andre Vehreschild wrote:
> >> Ping, ping!
> >>
> >> Please find attached a rebased version of the patch for the RANDOM_INIT
> >> issue with coarray Fortran. Nothing changed to the previous version, just
> >> rebased to current master.
> >>
> >> Regtested fine on x86_64-linux/f33. Ok for trunk?
> >>
> > I think you've down your due diligence with 2 pings.
> > I would commit.
> >
>


--
Andre Vehreschild * Email: vehre ad gmx dot de


Re: [r12-989 Regression] FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable -Os (test for warnings, line 98) on Linux/x86_64

2021-05-22 Thread Thomas Schwinge
Hi!

First: many thanks for running this automated regression testing
machinery!

On 2021-05-21T18:40:55-0700, "sunil.k.pandey via Gcc-patches" 
 wrote:
> On Linux/x86_64,
>
> 325aa13996bafce0c4927876c315d1fa706d9881 is the first bad commit
> commit 325aa13996bafce0c4927876c315d1fa706d9881
> Author: Thomas Schwinge 
> Date:   Fri May 21 08:51:47 2021 +0200
>
> [OpenACC privatization] Reject 'static', 'external' in blocks [PR90115]

Actually not that one, but instead one commit before is the culprit:

commit 11b8286a83289f5b54e813f14ff56d730c3f3185
Author: Thomas Schwinge 
Date:   Thu May 20 16:11:37 2021 +0200

[OpenACC privatization] Largely extend diagnostics and corresponding 
testsuite coverage [PR90115]

(Probably your testing aggregates commits that appear in some period of
time?  Maybe reflect that in the reporting emails?)

> caused
>
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -O0   (test for warnings, line 134)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -O0   (test for warnings, line 98)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -O1   (test for warnings, line 134)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -O1   (test for warnings, line 98)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -O2   (test for warnings, line 134)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -O2   (test for warnings, line 98)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -O3 -fomit-frame-pointer -funroll-loops 
> -fpeel-loops -ftracer -finline-functions   (test for warnings, line 134)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -O3 -fomit-frame-pointer -funroll-loops 
> -fpeel-loops -ftracer -finline-functions   (test for warnings, line 98)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -O3 -g   (test for warnings, line 134)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -O3 -g   (test for warnings, line 98)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -Os   (test for warnings, line 134)
> FAIL: libgomp.oacc-fortran/privatized-ref-2.f90 -DACC_DEVICE_TYPE_host=1 
> -DACC_MEM_SHARED=1 -foffload=disable  -Os   (test for warnings, line 98)

Sorry, and ACK, and I'm confused why I didn't see that in my own testing.
I've now pushed "[OpenACC privatization] Prune uninteresting/varying
diagnostics in 'libgomp.oacc-fortran/privatized-ref-2.f90'" to master
branch in commit 3050a1a18276d7cdd8946e34cc1344e30efb7030, see attached.


Grüße
 Thomas


-
Mentor Graphics (Deutschland) GmbH, Arnulfstrasse 201, 80634 München 
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Frank 
Thürauf
>From 3050a1a18276d7cdd8946e34cc1344e30efb7030 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge 
Date: Sat, 22 May 2021 10:28:34 +0200
Subject: [PATCH] [OpenACC privatization] Prune uninteresting/varying
 diagnostics in 'libgomp.oacc-fortran/privatized-ref-2.f90'

Minor fix-up for my recent commit 11b8286a83289f5b54e813f14ff56d730c3f3185
"[OpenACC privatization] Largely extend diagnostics and corresponding testsuite
coverage [PR90115]".

	libgomp/
	PR testsuite/90115
	* testsuite/libgomp.oacc-fortran/privatized-ref-2.f90: Prune
	uninteresting/varying diagnostics.

Reported-by: Sunil K Pandey 
---
 .../testsuite/libgomp.oacc-fortran/privatized-ref-2.f90  | 9 +++--
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-2.f90
index 60803e48cbe..baaee02b82c 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-2.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-2.f90
@@ -12,6 +12,8 @@
 ! { dg-additional-options "-foffload=-fopt-info-note-omp" }
 ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
 ! for testing/documenting aspects of that functionality.
+! Prune a few: uninteresting, and varying depending on GCC configuration (data types):
+! { dg-prune-output {note: variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} }
 
 ! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
 ! passed to 'incr' may be unset, and in that case, it will be set to [...]",
@@ -43,7 +45,6 @@ contains