Merged in r243653. Cheers, Hans
On Wed, Jul 29, 2015 at 8:59 PM, Richard Smith <[email protected]> wrote: > Aye. > > > On Tue, Jul 28, 2015 at 5:57 PM, Hans Wennborg <[email protected]> wrote: >> >> Sure. Richard, what say you? >> >> On Tue, Jul 28, 2015 at 3:54 PM, Pieb, Wolfgang >> <[email protected]> wrote: >> > Hi, would it be possible to put this fix into the 3.7 branch? >> > >> > Thanks >> > >> >> -----Original Message----- >> >> From: [email protected] [mailto:cfe-commits- >> >> [email protected]] On Behalf Of David Majnemer >> >> Sent: Friday, July 24, 2015 10:57 PM >> >> To: [email protected] >> >> Subject: r243206 - [CodeGen] Don't UBSan-ize the argument to >> >> __builtin_frame_address >> >> >> >> Author: majnemer >> >> Date: Sat Jul 25 00:57:24 2015 >> >> New Revision: 243206 >> >> >> >> URL: http://llvm.org/viewvc/llvm-project?rev=243206&view=rev >> >> Log: >> >> [CodeGen] Don't UBSan-ize the argument to __builtin_frame_address >> >> >> >> __builtin_frame_address requires its argument to be a constant >> >> expression which already implies that it cannot have undefined >> >> behavior. >> >> However, we used EmitScalarExpr to emit the argument causing UBSan to >> >> try to check for overflow. >> >> >> >> Instead, use the constant expression emission system. >> >> >> >> This fixes PR24256. >> >> >> >> Modified: >> >> cfe/trunk/lib/CodeGen/CGBuiltin.cpp >> >> cfe/trunk/test/CodeGen/integer-overflow.c >> >> >> >> Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp >> >> URL: http://llvm.org/viewvc/llvm- >> >> project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=243206&r1=243205&r2=243 >> >> 206&view=diff >> >> ======================================================================= >> >> ======= >> >> --- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original) >> >> +++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Sat Jul 25 00:57:24 2015 >> >> @@ -866,14 +866,14 @@ RValue CodeGenFunction::EmitBuiltinExpr( >> >> llvm::ConstantInt::get(Int32Ty, >> >> Offset))); >> >> } >> >> case Builtin::BI__builtin_return_address: { >> >> - Value *Depth = EmitScalarExpr(E->getArg(0)); >> >> - Depth = Builder.CreateIntCast(Depth, Int32Ty, false); >> >> + Value *Depth = >> >> + CGM.EmitConstantExpr(E->getArg(0), getContext().UnsignedIntTy, >> >> + this); >> >> Value *F = CGM.getIntrinsic(Intrinsic::returnaddress); >> >> return RValue::get(Builder.CreateCall(F, Depth)); >> >> } >> >> case Builtin::BI__builtin_frame_address: { >> >> - Value *Depth = EmitScalarExpr(E->getArg(0)); >> >> - Depth = Builder.CreateIntCast(Depth, Int32Ty, false); >> >> + Value *Depth = >> >> + CGM.EmitConstantExpr(E->getArg(0), getContext().UnsignedIntTy, >> >> + this); >> >> Value *F = CGM.getIntrinsic(Intrinsic::frameaddress); >> >> return RValue::get(Builder.CreateCall(F, Depth)); >> >> } >> >> >> >> Modified: cfe/trunk/test/CodeGen/integer-overflow.c >> >> URL: http://llvm.org/viewvc/llvm- >> >> project/cfe/trunk/test/CodeGen/integer- >> >> overflow.c?rev=243206&r1=243205&r2=243206&view=diff >> >> ======================================================================= >> >> ======= >> >> --- cfe/trunk/test/CodeGen/integer-overflow.c (original) >> >> +++ cfe/trunk/test/CodeGen/integer-overflow.c Sat Jul 25 00:57:24 2015 >> >> @@ -72,4 +72,11 @@ void test1() { >> >> // TRAPV: add i8 {{.*}}, 1 >> >> // CATCH_UB: add i8 {{.*}}, 1 >> >> ++PR9350; >> >> + >> >> + // PR24256: don't instrument __builtin_frame_address. >> >> + __builtin_frame_address(0 + 0); >> >> + // DEFAULT: call i8* @llvm.frameaddress(i32 0) >> >> + // WRAPV: call i8* @llvm.frameaddress(i32 0) >> >> + // TRAPV: call i8* @llvm.frameaddress(i32 0) >> >> + // CATCH_UB: call i8* @llvm.frameaddress(i32 0) >> >> } >> >> >> >> >> >> _______________________________________________ >> >> cfe-commits mailing list >> >> [email protected] >> >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
