aboutsummaryrefslogtreecommitdiff
path: root/test/Analysis/NewDelete-intersections.mm
diff options
context:
space:
mode:
Diffstat (limited to 'test/Analysis/NewDelete-intersections.mm')
-rw-r--r--test/Analysis/NewDelete-intersections.mm16
1 files changed, 14 insertions, 2 deletions
diff --git a/test/Analysis/NewDelete-intersections.mm b/test/Analysis/NewDelete-intersections.mm
index 886df1268f9f..cde8122b7274 100644
--- a/test/Analysis/NewDelete-intersections.mm
+++ b/test/Analysis/NewDelete-intersections.mm
@@ -5,6 +5,7 @@
typedef __typeof__(sizeof(int)) size_t;
extern "C" void *malloc(size_t);
+extern "C" void *alloca(size_t);
extern "C" void free(void *);
//----------------------------------------------------------------------------
@@ -29,13 +30,24 @@ void testMallocFreeNoWarn() {
int *p4 = (int *)malloc(sizeof(int));
free(p4);
int j = *p4; // no warn
+
+ int *p5 = (int *)alloca(sizeof(int));
+ free(p5); // no warn
}
void testDeleteMalloced() {
- int *p = (int *)malloc(sizeof(int));
- delete p; // no warn
+ int *p1 = (int *)malloc(sizeof(int));
+ delete p1; // no warn
+
+ int *p2 = (int *)__builtin_alloca(sizeof(int));
+ delete p2; // no warn
}
+void testUseZeroAllocatedMalloced() {
+ int *p1 = (int *)malloc(0);
+ *p1 = 1; // no warn
+}
+
//----- Test free standard new
void testFreeOpNew() {
void *p = operator new(0);