[cfe-commits] r112043 - in /cfe/trunk: lib/AST/ASTContext.cpp test/CodeGen/volatile.c

Argyrios Kyrtzidis kyrtzidis at apple.com
Wed Aug 25 11:50:25 PDT 2010


On Aug 25, 2010, at 7:37 PM, Chris Lattner wrote:

> 
> On Aug 25, 2010, at 3:15 AM, Argyrios Kyrtzidis wrote:
> 
>> Author: akirtzidis
>> Date: Wed Aug 25 05:15:24 2010
>> New Revision: 112043
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=112043&view=rev
>> Log:
>> Make sure volatile variables are emitted even if static. Fixes rdar://8315219
> 
> Wait, I don't get it.  Why does being volatile qualified force a global to be emitted?  The optimizer will delete it, so I don't think this is correct.

Chris is right, gcc doesn't emit the static volatile string with -O2; Fariborz please comment.

-Argiris

> 
> -Chris
> 
>> 
>> Modified:
>>   cfe/trunk/lib/AST/ASTContext.cpp
>>   cfe/trunk/test/CodeGen/volatile.c
>> 
>> Modified: cfe/trunk/lib/AST/ASTContext.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=112043&r1=112042&r2=112043&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/AST/ASTContext.cpp (original)
>> +++ cfe/trunk/lib/AST/ASTContext.cpp Wed Aug 25 05:15:24 2010
>> @@ -5606,6 +5606,10 @@
>>  if (VD->isThisDeclarationADefinition() == VarDecl::DeclarationOnly)
>>    return false;
>> 
>> +  // Always emit volatiles.
>> +  if (VD->getType().isVolatileQualified())
>> +    return true;
>> +
>>  // Structs that have non-trivial constructors or destructors are required.
>> 
>>  // FIXME: Handle references.
>> 
>> Modified: cfe/trunk/test/CodeGen/volatile.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/volatile.c?rev=112043&r1=112042&r2=112043&view=diff
>> ==============================================================================
>> --- cfe/trunk/test/CodeGen/volatile.c (original)
>> +++ cfe/trunk/test/CodeGen/volatile.c Wed Aug 25 05:15:24 2010
>> @@ -1,6 +1,7 @@
>> // RUN: %clang_cc1 -emit-llvm < %s -o %t
>> // RUN: grep volatile %t | count 28
>> // RUN: grep memcpy %t | count 7
>> +// RUN: %clang_cc1 %s -Wall -verify -emit-llvm -o - | FileCheck %s
>> 
>> // The number 28 comes from the current codegen for volatile loads;
>> // if this number changes, it's not necessarily something wrong, but
>> @@ -96,5 +97,9 @@
>>  (void)vF2;
>>  vF2 = vF2;
>>  vF2 = vF2 = vF2;
>> -  vF2 = (vF2, vF2);
>> +  vF2 = (vF2, vF2); // expected-warning {{expression result unused}}
>> }
>> +
>> +// Make sure this is emitted. rdar://8315219
>> +// CHECK: @gvx
>> +static volatile int gvx = 0;
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 





More information about the cfe-commits mailing list