Calculate __builtin_object_size when pointer depends on a condition
authorPetar Jovanovic <petar.jovanovic@imgtec.com>
Wed, 13 Apr 2016 12:25:25 +0000 (12:25 +0000)
committerPetar Jovanovic <petar.jovanovic@imgtec.com>
Wed, 13 Apr 2016 12:25:25 +0000 (12:25 +0000)
commit644b8c1a5d3773724491257fd80c24b13eb22e2c
tree99fdf93a253675b3844c32dbceb75ff33bd5a80e
parent9fb77fcfef393a3a481d2fc534b76ee22531798f
Calculate __builtin_object_size when pointer depends on a condition

This patch fixes calculating of builtin_object_size if it depends on a
condition. Before this patch compiler did not know how to calculate the
object size when it finds a condition that cannot be eliminated.
This patch enables calculating of builtin_object_size even in case when
condition cannot be eliminated by choosing minimum or maximum value as a
result from condition. Choosing minimum or maximum value from condition
is based on the second argument of __builtin_object_size function.

Patch by Strahinja Petrovic.

Differential Revision: http://reviews.llvm.org/D18438

llvm-svn: 266193
llvm/include/llvm/Analysis/MemoryBuiltins.h
llvm/lib/Analysis/MemoryBuiltins.cpp
llvm/lib/CodeGen/CodeGenPrepare.cpp
llvm/test/Transforms/CodeGenPrepare/builtin-condition.ll [new file with mode: 0644]
llvm/test/Transforms/InstCombine/builtin-object-size-offset.ll [new file with mode: 0644]