Issue 136812
Summary [clang-tidy] overflow builtins always write their output operand
Labels clang-tidy
Assignees
Reporter resistor
    Consider the following code: 

```
int test(int elementSize, int elementCount)
{
	int bufferSize;
	int allocSize;
	bool overflow = __builtin_mul_overflow(elementCount, elementSize, &bufferSize);
	overflow |= __builtin_add_overflow(4, bufferSize, &allocSize);
	if (overflow)
		return -1;
	return allocSize;
}
```

clang-tidy-20 produces the following false-positive warning:

```
foo.cpp:6:14: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
    6 |         overflow |= __builtin_add_overflow(4, bufferSize, &allocSize);
```

This seems to be because it does not understand that the prior call to `__builtin_mul_overflow` will always write to `bufferSize`.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to