[cfe-commits] r46482 - in /cfe/trunk: CodeGen/CGExprConstant.cpp test/CodeGen/globalinit.c

Anders Carlsson andersca at mac.com
Mon Jan 28 17:33:32 PST 2008


Author: andersca
Date: Mon Jan 28 19:33:32 2008
New Revision: 46482

URL: http://llvm.org/viewvc/llvm-project?rev=46482&view=rev
Log:
Handle binary or in constant expressions.

Modified:
    cfe/trunk/CodeGen/CGExprConstant.cpp
    cfe/trunk/test/CodeGen/globalinit.c

Modified: cfe/trunk/CodeGen/CGExprConstant.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CodeGen/CGExprConstant.cpp?rev=46482&r1=46481&r2=46482&view=diff

==============================================================================
--- cfe/trunk/CodeGen/CGExprConstant.cpp (original)
+++ cfe/trunk/CodeGen/CGExprConstant.cpp Mon Jan 28 19:33:32 2008
@@ -236,6 +236,14 @@
     return EmitLValue(E->getSubExpr());
   }
   
+  // Binary operators
+  llvm::Constant *VisitBinOr(const BinaryOperator *E) {
+    llvm::Constant *LHS = Visit(E->getLHS());
+    llvm::Constant *RHS = Visit(E->getRHS());
+    
+    return llvm::ConstantExpr::getOr(LHS, RHS);
+  }
+
   // Utility methods
   const llvm::Type *ConvertType(QualType T) {
     return CGM.getTypes().ConvertType(T);

Modified: cfe/trunk/test/CodeGen/globalinit.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/globalinit.c?rev=46482&r1=46481&r2=46482&view=diff

==============================================================================
--- cfe/trunk/test/CodeGen/globalinit.c (original)
+++ cfe/trunk/test/CodeGen/globalinit.c Mon Jan 28 19:33:32 2008
@@ -36,8 +36,12 @@
 static int a = { 1 };
 static int b = { 1, 2 };
 
+// References to enums.
 enum {
 	EnumA, EnumB
 };
 
 int c[] = { EnumA, EnumB };
+
+// Binary operators
+int d[] = { EnumA | EnumB };





More information about the cfe-commits mailing list