Resolve the static-analysis bustage from bug 498938 by recognizing COND_EXPR.

This commit is contained in:
Benjamin Smedberg 2009-07-27 10:47:22 -04:00
Родитель 04bcf0dab6
Коммит c63a036431
5 изменённых файлов: 28 добавлений и 3 удалений

Просмотреть файл

@ -161,6 +161,7 @@ function process_cp_pre_genericize(fndecl)
let assign = stack[i]; let assign = stack[i];
switch (TREE_CODE(assign)) { switch (TREE_CODE(assign)) {
case VAR_DECL: case VAR_DECL:
case COND_EXPR:
break; break;
case INIT_EXPR: case INIT_EXPR:

Просмотреть файл

@ -58,10 +58,12 @@ STACK_FAILURE_TESTCASES = \
StackVector.cpp \ StackVector.cpp \
StackConditional.cpp \ StackConditional.cpp \
StackAggrInit.cpp \ StackAggrInit.cpp \
StackCondBad.cpp \
$(NULL) $(NULL)
STACK_PASS_TESTCASES = \ STACK_PASS_TESTCASES = \
StackPlacementNewOK.cpp \ StackPlacementNewOK.cpp \
StackCond.cpp \
$(NULL) $(NULL)
OUTPARAMS_WARNING_TESTCASES = \ OUTPARAMS_WARNING_TESTCASES = \

Просмотреть файл

@ -0,0 +1,12 @@
#include "nscore.h"
struct A
{
};
A* tfunc(int len)
{
A arr[5];
A* a = len <= 5 ? arr : new A[len];
return a;
}

Просмотреть файл

@ -0,0 +1,12 @@
#include "nscore.h"
struct NS_STACK_CLASS A
{
};
A* tfunc(int len)
{
A arr[5];
A* a = len <= 5 ? arr : new A[len];
return a;
}

Просмотреть файл

@ -3,9 +3,7 @@ typedef int PRInt32;
typedef PRUint32 nsresult; typedef PRUint32 nsresult;
nsresult foo(__attribute__((user("outparam"))) int *a) { nsresult foo(nsresult x, __attribute__((user("outparam"))) int *a) {
int x;
if (x == 0) { if (x == 0) {
*a = 1; *a = 1;
} }