https://bugs.llvm.org/show_bug.cgi?id=40345
Bug ID: 40345
Summary: Function merging pass miscompiles identical vararg
functions
Product: libraries
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: normal
Priority: P
Component: Interprocedural Optimizations
Assignee: unassignedb...@nondot.org
Reporter: v...@apple.com
CC: llvm-bugs@lists.llvm.org
Example:
```
#include <stdarg.h>
void escape(int);
void simple_va(const char* fmt, ...)
{
va_list args;
va_start(args, fmt);
int i = va_arg(args, int);
escape(i);
va_end(args);
}
void simple_va2(const char* fmt, ...)
{
va_list args;
va_start(args, fmt);
int i = va_arg(args, int);
escape(i);
va_end(args);
}
```
Clang emits (https://godbolt.org/z/C54W53):
```
; Function Attrs: minsize optsize uwtable
define dso_local void @_Z9simple_vaPKcz(i8* nocapture readnone, ...)
local_unnamed_addr #3 {
tail call void (i8*, ...) @_Z10simple_va2PKcz(i8* nocapture readnone %0) #3
ret void
}
```
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs