[llvm-commits] [llvm] r137134 - in /llvm/trunk: lib/Target/CBackend/CBackend.cpp test/CodeGen/CBackend/pr10081.ll
Eli Friedman
eli.friedman at gmail.com
Tue Aug 9 11:44:15 PDT 2011
On Tue, Aug 9, 2011 at 11:31 AM, Bill Wendling <isanbard at gmail.com> wrote:
> Author: void
> Date: Tue Aug 9 13:31:50 2011
> New Revision: 137134
>
> URL: http://llvm.org/viewvc/llvm-project?rev=137134&view=rev
> Log:
> Print out the variable declaration only if it is a declaration. Otherwise, a
> 'static' variable will be emitted twice.
> PR10081
>
> Added:
> llvm/trunk/test/CodeGen/CBackend/pr10081.ll
> Modified:
> llvm/trunk/lib/Target/CBackend/CBackend.cpp
>
> Modified: llvm/trunk/lib/Target/CBackend/CBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CBackend/CBackend.cpp?rev=137134&r1=137133&r2=137134&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/CBackend/CBackend.cpp (original)
> +++ llvm/trunk/lib/Target/CBackend/CBackend.cpp Tue Aug 9 13:31:50 2011
> @@ -1817,7 +1817,7 @@
> Out << "\n\n/* Global Variable Declarations */\n";
> for (Module::global_iterator I = M.global_begin(), E = M.global_end();
> I != E; ++I)
> - if (!I->isDeclaration()) {
> + if (I->isDeclaration()) {
> // Ignore special globals, such as debug info.
> if (getGlobalVariableClass(I))
> continue;
I'm pretty sure the original code was correct... and works as long as
you don't try to compile the output of the C backend as C++. Consider
something like the following C code:
static void* x;
static void* y = &x;
static void* x = &y;
void* z = &y;
-Eli
More information about the llvm-commits
mailing list