[cfe-commits] r46859 - in /cfe/trunk: CodeGen/CGExpr.cpp CodeGen/CodeGenTypes.cpp test/CodeGen/bitfield.c

Eli Friedman eli.friedman at gmail.com
Thu Feb 7 12:05:06 PST 2008


On Feb 7, 2008 11:29 AM, Lauro Ramos Venancio <lauro.venancio at gmail.com> wrote:
> +  if (Field->isBitField()) {
> +    const llvm::Type * FieldTy = ConvertType(Field->getType());
> +    const llvm::PointerType * BaseTy =
> +      cast<llvm::PointerType>(BaseValue->getType());
> +    unsigned AS = BaseTy->getAddressSpace();
> +    BaseValue = Builder.CreateBitCast(BaseValue,
> +                                      llvm::PointerType::get(FieldTy, AS),
> +                                      "tmp");
> +    V = Builder.CreateGEP(BaseValue,
> +                          llvm::ConstantInt::get(llvm::Type::Int32Ty, idx),
> +                          "tmp");

Wow, this is going to be seriously painful to deal with for constant
initializers.  Any particular suggestions there?  (I suppose it was
going to be painful in any case, though.)

-Eli



More information about the cfe-commits mailing list