[llvm-bugs] [Bug 41978] New: IR change avoids clue to the compiler optimization that the global variable is not referred from other external obj files
via llvm-bugs
llvm-bugs at lists.llvm.org
Wed May 22 03:52:37 PDT 2019
https://bugs.llvm.org/show_bug.cgi?id=41978
Bug ID: 41978
Summary: IR change avoids clue to the compiler optimization
that the global variable is not referred from other
external obj files
Product: lld
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: All Bugs
Assignee: unassignedbugs at nondot.org
Reporter: balarishi.bhogadi at amd.com
CC: llvm-bugs at lists.llvm.org, peter.smith at linaro.org
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Problem Module: lld
-----------------------
Test Case:
-------------
#include <stdio.h>
#include <stdlib.h>
// A linked list node
struct Node {
int data;
struct Node* next;
struct Node* prev;
};
/* Given a reference (pointer to pointer) to the head of a list
and an int, inserts a new node on the front of the list. */
void push(struct Node** head_ref, int new_data)
{
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = (*head_ref);
new_node->prev = NULL;
if ((*head_ref) != NULL)
(*head_ref)->prev = new_node;
(*head_ref) = new_node;
}
// This function prints contents of linked list starting from the given node
void printList(void);
struct Node* head;
/* Driver program to test above functions*/
int main()
{
head = NULL;
push(&head, 7);
push(&head, 1);
push(&head, 4);
printList1(head);
return 0;
}
Compiler invocation: clang -flto -fuse-ld=lld -O3 t3.c -o a.out
Symptoms of issue:
------------------
When the IR for the above code was dumped during FLTO stage prior to May12th
2019 (in llvm compiler) the IR (for head global variable) was as follows,
@head = internal global %struct.Node* null, align 8
After May12th or later the IR (for head global variable) looked as follows,
@head = common dso_local global %struct.Node* null, align 8
This change does not seem to be appropriate since it does not give clue to the
compiler optimization that the global variable is not referred from other
external obj files.
Probable checkin:
----------------------
Author: Rui Ueyama <ruiu at google.com>
Date: Thu May 16 03:29:03 2019 +0000
Introduce CommonSymbol.
Not sure if this checkin is the place where this issue got introduced.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190522/24960ce5/attachment.html>
More information about the llvm-bugs
mailing list