我正在编写一个自制语言的编译器,它只能处理int值,即i32.条件和表达式与C语言类似.因此,我正在考虑条件语句作为表达式,即它们返回一个int值.它们也可以用在表达式中,例如(2 > 1) + (3 > 2)将返回2.但LLVM条件输出i1值.
i1应该转换成i32,以便我可以执行二进制操作if(variable)或if(a + b).为此,我需要转换i32为i1最后,我想办法从类型转换i1到i32和i32到i1.我的代码现在提供这些错误:
对于如下声明if(variable):
error: branch condition must have 'i1' type
br i32 %0, label %ifb, label %else
^
Run Code Online (Sandbox Code Playgroud)
对于声明 a = b > 3
error: stored value and pointer type do not match
store i1 %gttmp, i32* @a
^
Run Code Online (Sandbox Code Playgroud)
有关如何做到这一点的任何建议?
我想为用户制作一个注册/登录 API。问题是这样的:如果我通过管理站点创建用户,登录工作正常。
如果我通过我制作的注册页面创建用户,则登录不起作用。(authenticate() 函数返回 None,即使该用户仍在用户表中。)
我转到管理站点,转到更改密码的链接,然后再次输入相同的密码。之后我就可以成功登录了。
我认为问题在于保存密码或登录。我已经交叉检查了很多,但无法弄清楚。我正在提供所有文件。您可能会浏览重要的代码。
模型.py
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User
from datetime import datetime
class Recruiter(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
company_name = models.CharField(max_length=120)
HR_office_number = models.CharField(max_length=15)
HR_mobile_number = models.CharField(max_length=15)
def __str__(self):
return self.user.username
Run Code Online (Sandbox Code Playgroud)
表格.py
from django import forms
from .models import Recruiter, User
from django.core.exceptions import ValidationError
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput(), max_length=128)
confirm_password = forms.CharField(widget=forms.PasswordInput(), max_length=128)
class Meta:
model = User
fields = ['first_name', 'last_name', 'username', 'email']
def __init__(self, …Run Code Online (Sandbox Code Playgroud) django ×1
django-views ×1
llvm ×1
llvm-c++-api ×1
llvm-clang ×1
llvm-gcc ×1
llvm-ir ×1
python ×1