public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/31707]  New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp
@ 2007-04-25 22:27 hackbunny at reactos dot com
  2007-04-25 22:28 ` [Bug c/31707] " hackbunny at reactos dot com
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: hackbunny at reactos dot com @ 2007-04-25 22:27 UTC (permalink / raw)
  To: gcc-bugs

Command line: gcc -c lib\rtl\workitem.c -o obj-i386\lib\rtl\workitem.o
-Iobj-i386\lib\rtl -Ilib\rtl -D__USE_W32API -D_NTOSKRNL_ -D__NO_CTYPE_INLINES
-DNO_RTL_INLINES -D_NTSYSTEM_ -D_NTDLLBUILD_ -Iobj-i386\lib\rtl -I. -Iinclude
-Iinclude\psdk -Iinclude\crt -Iinclude\ddk -Iinclude\GL -Iinclude\ndk
-Iinclude\reactos -Iinclude\reactos\libs -D_M_IX86 -D_X86_ -D__i386__
-D_REACTOS_ -DDBG -D_SEH_ENABLE_TRACE -Wall -march=pentium -Wpointer-arith -Os
-Wno-strict-aliasing -ftracer -momit-leaf-frame-pointer
-mpreferred-stack-boundary=2 -g -pipe -Werror -fno-optimize-sibling-calls
-save-temps -v

Output:
gcc: warning: -pipe ignored because -save-temps specified
Using built-in specs.
Target: mingw32
Configured with: ../gcc-4.2.0/configure --host=mingw32 --target=mingw32
--prefix=/mingw --with-gnu-as --with-gnu-ld --enable-threads --disable-nls
--enable-languages=c,c++ --enable-threads=win32 --disable-win32-registry
--disable-win32-registry --disable-shared
Thread model: win32
gcc version 4.2.0 20070415 (prerelease)
 d:/rosbe/4.2.0/bin/../libexec/gcc/mingw32/4.2.0/cc1.exe -E -quiet -v
-Iobj-i386\lib\rtl -Ilib\rtl -Iobj-i386\lib\rtl -I. -Iinclude -Iinclude\psdk
-Iinclude\crt -Iinclude\ddk -Iinclude\GL -Iinclude\ndk -Iinclude\reactos
-Iinclude\reactos\libs -iprefix d:\rosbe\4.2.0\bin\../lib/gcc/mingw32/4.2.0/
-D__USE_W32API -D_NTOSKRNL_ -D__NO_CTYPE_INLINES -DNO_RTL_INLINES -D_NTSYSTEM_
-D_NTDLLBUILD_ -D_M_IX86 -D_X86_ -D__i386__ -D_REACTOS_ -DDBG
-D_SEH_ENABLE_TRACE lib\rtl\workitem.c -march=pentium -momit-leaf-frame-pointer
-mpreferred-stack-boundary=2 -Wall -Wpointer-arith -Wno-strict-aliasing -Werror
-ftracer -fno-optimize-sibling-calls -fworking-directory -Os -fpch-preprocess
-o workitem.i
ignoring nonexistent directory "c:/mingw/include"
ignoring nonexistent directory "/mingw/include"
ignoring nonexistent directory "c:/mingw/lib/gcc/mingw32/4.2.0/include"
ignoring nonexistent directory "c:/mingw/mingw32/include"
ignoring nonexistent directory "/mingw/include"
#include "..." search starts here:
#include <...> search starts here:
 obj-i386/lib/rtl
 lib/rtl
 obj-i386/lib/rtl
 .
 include
 include/psdk
 include/crt
 include/ddk
 include/GL
 include/ndk
 include/reactos
 include/reactos/libs
 D:/RosBE/4.2.0/include
 D:/RosBE/4.2.0/lib/gcc/mingw32/4.2.0/include
 d:/rosbe/4.2.0/bin/../lib/gcc/mingw32/4.2.0/include
End of search list.
 d:/rosbe/4.2.0/bin/../libexec/gcc/mingw32/4.2.0/cc1.exe -fpreprocessed
workitem.i -quiet -dumpbase workitem.c -march=pentium -momit-leaf-frame-pointer
-mpreferred-stack-boundary=2 -auxbase-strip obj-i386\lib\rtl\workitem.o -g -Os
-Wall -Wpointer-arith -Wno-strict-aliasing -Werror -version -ftracer
-fno-optimize-sibling-calls -o workitem.s
GNU C version 4.2.0 20070415 (prerelease) (mingw32)
        compiled by GNU C version 4.2.0 20070415 (prerelease).
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=131002
Compiler executable checksum: 232281512bb28abd92c2d204d6f594e1
cc1.exe: warnings being treated as errors
lib\rtl\workitem.c: In function 'foo':
lib\rtl\workitem.c:21: warning: '_SEHPortableFrame' may be used uninitialized
in this function
lib\rtl\workitem.c:21: warning: '_SEHState' may be used uninitialized in this
function


-- 
           Summary: Spurious "'<variable>' may be used uninitialized in this
                    function" warnings when using __builtin_setjmp
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hackbunny at reactos dot com
  GCC host triplet: mingw32
GCC target triplet: mingw32


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
@ 2007-04-25 22:28 ` hackbunny at reactos dot com
  2007-04-25 22:30 ` hackbunny at reactos dot com
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: hackbunny at reactos dot com @ 2007-04-25 22:28 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from hackbunny at reactos dot com  2007-04-25 23:28 -------
Created an attachment (id=13442)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13442&action=view)
Preprocessor output


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
  2007-04-25 22:28 ` [Bug c/31707] " hackbunny at reactos dot com
@ 2007-04-25 22:30 ` hackbunny at reactos dot com
  2007-04-25 22:30 ` hackbunny at reactos dot com
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: hackbunny at reactos dot com @ 2007-04-25 22:30 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from hackbunny at reactos dot com  2007-04-25 23:29 -------
Created an attachment (id=13443)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13443&action=view)
GIMPLE source for the test case


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
  2007-04-25 22:28 ` [Bug c/31707] " hackbunny at reactos dot com
  2007-04-25 22:30 ` hackbunny at reactos dot com
@ 2007-04-25 22:30 ` hackbunny at reactos dot com
  2007-04-25 22:34 ` hackbunny at reactos dot com
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: hackbunny at reactos dot com @ 2007-04-25 22:30 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from hackbunny at reactos dot com  2007-04-25 23:30 -------
Created an attachment (id=13444)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13444&action=view)
Final tree dump for the test case

By going through the tree dump, it appears the warning has no reason to be


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug c/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
                   ` (2 preceding siblings ...)
  2007-04-25 22:30 ` hackbunny at reactos dot com
@ 2007-04-25 22:34 ` hackbunny at reactos dot com
  2007-04-25 22:39 ` [Bug middle-end/31707] " pinskia at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: hackbunny at reactos dot com @ 2007-04-25 22:34 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from hackbunny at reactos dot com  2007-04-25 23:33 -------
A couple more notes:
 * no warning if setjmp is used instead of __builtin_setjmp
 * no warning if the call to "bar()" is removed
 * no warning in GCC 4.1.2


-- 

hackbunny at reactos dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hackbunny at reactos dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
                   ` (3 preceding siblings ...)
  2007-04-25 22:34 ` hackbunny at reactos dot com
@ 2007-04-25 22:39 ` pinskia at gcc dot gnu dot org
  2007-04-25 22:59 ` [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp and loops and extern function call pinskia at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-04-25 22:39 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|major                       |normal
          Component|c                           |middle-end


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp and loops and extern function call
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
                   ` (4 preceding siblings ...)
  2007-04-25 22:39 ` [Bug middle-end/31707] " pinskia at gcc dot gnu dot org
@ 2007-04-25 22:59 ` pinskia at gcc dot gnu dot org
  2008-05-26 11:58 ` pinskia at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-04-25 22:59 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from pinskia at gcc dot gnu dot org  2007-04-25 23:59 -------
The problem is that the CFG does not know that the first time through the loop
when calling bar, you cannot get to the setjmp.  This is a hard problem to
solve really.  You have to track the uninitialized variable usage your solve to
solve it correctly.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   GCC host triplet|mingw32                     |
 GCC target triplet|mingw32                     |
           Keywords|                            |diagnostic
            Summary|Spurious "'<variable>' may  |Spurious "'<variable>' may
                   |be used uninitialized in    |be used uninitialized in
                   |this function" warnings when|this function" warnings when
                   |using __builtin_setjmp      |using __builtin_setjmp and
                   |                            |loops and extern function
                   |                            |call


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp and loops and extern function call
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
                   ` (5 preceding siblings ...)
  2007-04-25 22:59 ` [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp and loops and extern function call pinskia at gcc dot gnu dot org
@ 2008-05-26 11:58 ` pinskia at gcc dot gnu dot org
  2008-05-26 14:17 ` hackbunny at reactos dot com
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2008-05-26 11:58 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from pinskia at gcc dot gnu dot org  2008-05-26 11:57 -------
As mentioned this is a very hard problem to solve.  The compiler has to track
all uses of __builtin_setjmp and __builtin_longjmp but of which are really only
used for Ada eh usage really.  So using it inside code which is not Ada code
what do you expect?  Look at how the CFG is created and you will notice it is a
hard problem to solve.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp and loops and extern function call
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
                   ` (6 preceding siblings ...)
  2008-05-26 11:58 ` pinskia at gcc dot gnu dot org
@ 2008-05-26 14:17 ` hackbunny at reactos dot com
  2008-05-26 16:25 ` pinskia at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: hackbunny at reactos dot com @ 2008-05-26 14:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from hackbunny at reactos dot com  2008-05-26 14:17 -------
(In reply to comment #6)
> but of which are really only used for Ada eh usage really.

and C++ for SJLJ exceptions. No? The library I use it in is a custom exception
handling library, that integrates with the Windows exception handling ABI in a
way that GCC can't (yet). As unfortunate artifacts of user-visible syntax, the
code is full of hacks - local variables I expect to be const-folded or
otherwise inlined, bogus loops, bogus conditionals. GCC always had difficulty
with it, producing code like "set register to 1; if register equals 1 then...",
but GCC 4.2 is the first release that actually hurts our build with spurious
warnings

>From tree dumps and disassemblies I can see a significant change in how
__builtin_setjmp is emitted between 4.1 and 4.2, and that's all I know about
it. I have no real interest in GCC internals

Can this issue at least be confirmed as NEW, though? or I'm afraid it will
never even get a chance to be looked at by someone else


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp and loops and extern function call
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
                   ` (7 preceding siblings ...)
  2008-05-26 14:17 ` hackbunny at reactos dot com
@ 2008-05-26 16:25 ` pinskia at gcc dot gnu dot org
  2008-05-26 18:31 ` ebotcazou at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2008-05-26 16:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from pinskia at gcc dot gnu dot org  2008-05-26 16:24 -------
(In reply to comment #7)
> and C++ for SJLJ exceptions. No?

Nope, normal builtin exception for sjlj is expanded later on and does not go
through the __builtin_setjmp/__builtin_longjmp mechanism at all.  In fact it is
expanded late in the phase after the tree level has finished.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp and loops and extern function call
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
                   ` (8 preceding siblings ...)
  2008-05-26 16:25 ` pinskia at gcc dot gnu dot org
@ 2008-05-26 18:31 ` ebotcazou at gcc dot gnu dot org
  2009-08-05 16:02 ` manu at gcc dot gnu dot org
  2009-11-10  9:00 ` ebotcazou at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2008-05-26 18:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from ebotcazou at gcc dot gnu dot org  2008-05-26 18:30 -------
> and C++ for SJLJ exceptions. No?

No, regular SJLJ exceptions are implemented in a more clever way and don't
suffer from this problem.

> GCC always had difficulty with it, producing code like "set register to 1;
> if register equals 1 then...", but GCC 4.2 is the first release that
> actually hurts our build with spurious warnings

GCC 4.0.x and 4.1.x will misoptimize this kind of code, GCC 4.2+ is OK.

> From tree dumps and disassemblies I can see a significant change in how
> __builtin_setjmp is emitted between 4.1 and 4.2, and that's all I know
> about it.

Right, __builtin_setjmp support was overhauled for 4.2.

> Can this issue at least be confirmed as NEW, though? or I'm afraid it will
> never even get a chance to be looked at by someone else

Yes, I'm going to confirm, but this is not (realistically) fixable.


-- 

ebotcazou at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ebotcazou at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-05-26 18:30:35
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp and loops and extern function call
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
                   ` (9 preceding siblings ...)
  2008-05-26 18:31 ` ebotcazou at gcc dot gnu dot org
@ 2009-08-05 16:02 ` manu at gcc dot gnu dot org
  2009-11-10  9:00 ` ebotcazou at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: manu at gcc dot gnu dot org @ 2009-08-05 16:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from manu at gcc dot gnu dot org  2009-08-05 16:01 -------
I think we should close this as WONTFIX.

* In GCC 4.5 we only warn at -O1 with a "may be", no warning with -O{0,2,3,s}.
So it seems just a matter of optimizers exposing/hiding things.

* The testcase is a bit obscure, and too large for my taste.

* Two developers have said that this is not realistically fixable.

* The impact on users seems to be limited.


-- 

manu at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|manu at gcc dot gnu dot org |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp and loops and extern function call
  2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
                   ` (10 preceding siblings ...)
  2009-08-05 16:02 ` manu at gcc dot gnu dot org
@ 2009-11-10  9:00 ` ebotcazou at gcc dot gnu dot org
  11 siblings, 0 replies; 13+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2009-11-10  9:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from ebotcazou at gcc dot gnu dot org  2009-11-10 09:00 -------
Not realistically fixable.


-- 

ebotcazou at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |WONTFIX


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31707


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2009-11-10  9:00 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-04-25 22:27 [Bug c/31707] New: Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp hackbunny at reactos dot com
2007-04-25 22:28 ` [Bug c/31707] " hackbunny at reactos dot com
2007-04-25 22:30 ` hackbunny at reactos dot com
2007-04-25 22:30 ` hackbunny at reactos dot com
2007-04-25 22:34 ` hackbunny at reactos dot com
2007-04-25 22:39 ` [Bug middle-end/31707] " pinskia at gcc dot gnu dot org
2007-04-25 22:59 ` [Bug middle-end/31707] Spurious "'<variable>' may be used uninitialized in this function" warnings when using __builtin_setjmp and loops and extern function call pinskia at gcc dot gnu dot org
2008-05-26 11:58 ` pinskia at gcc dot gnu dot org
2008-05-26 14:17 ` hackbunny at reactos dot com
2008-05-26 16:25 ` pinskia at gcc dot gnu dot org
2008-05-26 18:31 ` ebotcazou at gcc dot gnu dot org
2009-08-05 16:02 ` manu at gcc dot gnu dot org
2009-11-10  9:00 ` ebotcazou at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).